none
Как сравнить два ФИО и выделить различающиеся элементы в Powershell? RRS feed

  • Вопрос

  • Добрый день.

    Подскажите пожалуйста. Powershell. Как можно сравнить два ФИО и выделить различающиеся элементы?
    Сравниваю с помощью compare-object.
    Допустим есть два фио "Иванов Иван Иваныч" и "Иванов Иван Альбертыч". Надо чтобы выдал первое фио Иванов Иван Иваныч (выделил жирным то что различается) и в скобках второе ФИО)

    Тоесть результат:
    Иванов Иван Иваныч (Иванов Иван Альбертыч)
    Возможно ли?

    Спасибо заранее

    • Изменено [technoir] 19 сентября 2018 г. 14:40
    19 сентября 2018 г. 14:34

Ответы

  • Добрый день.

    Идея в том чтобы сравнивать ФИО 1 и ФИО 2. Затем выводить ФИО 1 с подсветкой того, что не совпадает.

    Если всё не совпадает то - Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Если всё совпадает то? - Иванов Иван Иваныч

    Если совпадает отчество только, то Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Вообщем выделяется всё что не совпадает

     $FIO1 = "Иванов Иван Иваныч"
     $FIO2 = "Иванов Иван Альбертыч"
     $FIO1_arr = $FIO1 -split ' ' 
     $FIO2_arr = $FIO2 -split ' '
     $Res = ''
     foreach ($i in 0..2){
        if ($FIO1_arr[$i] -ne $FIO2_arr[$i]){$Res += " <b>$($FIO1_arr[$i])</b>"}
        Else {$Res += " $($FIO1_arr[$i])"}
     }
     $res = $res -replace '^ '
     If ($res -match '\<b\>') {"$res ($FIO2)"}



    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа [technoir] 19 сентября 2018 г. 15:32
    19 сентября 2018 г. 15:15
    Модератор

Все ответы

  • Все возможно
    Что делать в случае если все 3 слова не совпадают (Иванов Иван Иванович, Сидоров Алексей Сергеевич)?
    Что делать если совпадает отчество но не совпадает фамилия и имя?

     $FIO1 = "Иванов Иван Иваныч"
     $FIO2 = "Иванов Иван Альбертыч"
     $FIO1_arr = $FIO1 -split ' ' 
     $FIO2_arr = $FIO2 -split ' '
     Compare-Object $FIO1_arr $FIO2_arr


    The opinion expressed by me is not an official position of Microsoft

    19 сентября 2018 г. 14:40
    Модератор
  • Добрый день.

    Идея в том чтобы сравнивать ФИО 1 и ФИО 2. Затем выводить ФИО 1 с подсветкой того, что не совпадает.

    Если всё не совпадает то - Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Если всё совпадает то? - Иванов Иван Иваныч

    Если совпадает отчество только, то Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Вообщем выделяется всё что не совпадает

    19 сентября 2018 г. 14:51
  • Добрый день.

    Идея в том чтобы сравнивать ФИО 1 и ФИО 2. Затем выводить ФИО 1 с подсветкой того, что не совпадает.

    Если всё не совпадает то - Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Если всё совпадает то? - Иванов Иван Иваныч

    Если совпадает отчество только, то Иванов Иван Иваныч (Иванов Иван Альбертыч)

    Вообщем выделяется всё что не совпадает

     $FIO1 = "Иванов Иван Иваныч"
     $FIO2 = "Иванов Иван Альбертыч"
     $FIO1_arr = $FIO1 -split ' ' 
     $FIO2_arr = $FIO2 -split ' '
     $Res = ''
     foreach ($i in 0..2){
        if ($FIO1_arr[$i] -ne $FIO2_arr[$i]){$Res += " <b>$($FIO1_arr[$i])</b>"}
        Else {$Res += " $($FIO1_arr[$i])"}
     }
     $res = $res -replace '^ '
     If ($res -match '\<b\>') {"$res ($FIO2)"}



    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа [technoir] 19 сентября 2018 г. 15:32
    19 сентября 2018 г. 15:15
    Модератор
  • Спасибо большое!!!

    Хорошего дня!!!

    19 сентября 2018 г. 15:32