Я сейчас разговариваю по телефону, поэтому не буду много печатать ..
$str -split '\D+' | Sort-Object -Unique
Должен это сделать.
В дополнение к этому, после
-split
элементы (хотя и числа) по-прежнему являются строками.Выполнение вышеупомянутой сортировки будет поэтому сортировать буквенно-цифровой, а не числовой.Поскольку в этом примере все числа имеют три цифры, сортировка будет выглядеть нормально, но если там есть числа с меньшими или большими цифрами, вы поймете, что я имею в виду:
Допустим, ваша строка выглядит следующим образом:
$str = "123.456,789;12 101-202_303%404..505(606) 7 707 a bunch of text 808 %%%*&#!@#$%^&*() 909"
Разделение и сортировка даст вам массив, подобный:
101
12
123
202
303
404
456
505
606
7
707
789
808
909
Если вы немного измените Sort-Object
, чтобы стать таким:
$str -split '\D+' | Sort-Object -Property {[int]$_} -Unique
Выходные данные будут отсортированы по номеру, поэтому результат будет следующим:
7
12
101
123
202
303
404
456
505
606
707
789
808
909
Конечно, объединить элементы после этого, чтобы они стали строкой с разделителями-запятыми, так же просто, как
($str -split '\D+' | Sort-Object -Property {[int]$_} -Unique) -join ','
Выход:
7,12,101,123,202,303,404,456,505,606,707,789,808,909