#powershell
#powershell
Вопрос:
У меня есть два массива строк
$a1 = @('a123-xyz','b479-wer','cbchjk','lio_iuy')
$b1 = @('a123-xyz','b479-wer','cbc-hjk')
Я хочу сравнить, $a1
и $b1
какого бы элемента там не было в $b1
, я должен его получить.
Я пишу так:
$c1 = $a1 | Where {$b1 -NotContains $_}
$c1
будет содержать 'cbchjk','lio_iuy'
.
Вопрос:
$al
и $b1
содержат «cbchjk» и «cbc-hjk». но в $a1
значении ошибка опечатки. Я ищу вместо того, чтобы говорить, что «cbc-hjk» и «cbchjk» отличаются (технически), я хочу продолжить, автоматически исправив значение $a1
и $c1
должно иметь только «lio_iuy»
Комментарии:
1. Нечеткое сопоставление — очень широкая и сложная тема. Вам нужно предоставить гораздо больше информации о том, что вы хотите сопоставить, а также о том, что вы не хотите сопоставлять. Например, удаление дефисов и подчеркиваний из всех значений перед выполнением сравнения позволило бы получить желаемый результат для этих конкретных значений . Тот же подход не сработает, если, например, была введена ошибка в букве или цифре.
2. спасибо Ansgar за ответ. не могли бы вы поделиться некоторыми примерами кода для обоих вариантов. Это будет хорошая тема для изучения.
3. Начните с чтения о расстоянии Левенштейна . Существует несколько реализаций алгоритма, включая версию Powershell.
4. спасибо за помощь.