Ответ 1
Оператор -split
использует строку для разделения, вместо chararray like Split()
:
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = "<<>>"
$string -split $separator
5637144576, messag<>est
5637145326, 1
5637145328, 0
Если вы хотите использовать метод Split()
со строкой, вам нужно, чтобы $seperator
был строковым символом с одним элементом, а также указывал значение stringsplitoptions. Вы можете увидеть это, проверив его определение:
$string.Split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
#This one
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = [string[]]@("<<>>")
$string.Split($separator, [System.StringSplitOptions]::RemoveEmptyEntries)
5637144576, messag<>est
5637145326, 1
5637145328, 0
EDIT: Как отметил @RomanKuzmin, -split
по умолчанию использует шаблоны regex. Поэтому имейте в виду избежать специальных символов (например, .
, которые в регулярном выражении являются "любым символом" ). Вы также можете заставить simplematch
отключить регулярное выражение, например:
$separator = "<<>>"
$string -split $separator, 0, "simplematch"
Подробнее о -split
здесь.