Поделиться через


about_Split

Краткое описание

Описывает, как использовать оператор Split для разделения одной или нескольких строк на подстроки.

Подробное описание

Оператор Split разделяет одну или несколько строк на подстроки. Можно изменить следующие элементы операции Split:

  • Разделитель. Значение по умолчанию — пробелы, но можно указать символы, строки, шаблоны или блоки скриптов, которые указывают разделитель. Оператор Split в PowerShell использует регулярное выражение в разделителю, а не простой символ.
  • Максимальное количество подстроок. Значение по умолчанию — возвращать все подстроки. Если указать число меньше числа подстроок, остальные подстроки объединяются в последней подстроке.
  • Параметры, определяющие условия сопоставления разделителя, например SimpleMatch и Multiline.

Синтаксис

На следующей схеме показан синтаксис оператора -split.

Имена параметров не отображаются в команде. Включите только значения параметров. Значения должны отображаться в порядке, указанном на схеме синтаксиса.

-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

Вы можете заменить -iSplit или -cSplit в -split любой двоичной инструкции Split (оператор Split, включающий разделитель или блок скрипта). -split Операторы -iSplit не учитывает регистр. Оператор -cSplit учитывает регистр, то есть этот случай учитывается при применении правил разделителя.

Параметры

<Строка или <строка>[]>

Указывает одну или несколько строк, которые необходимо разделить. При отправке нескольких строк все строки разделяются с помощью одного и того же правила разделителя.

Пример:

-split "red yellow blue green"
red
yellow
blue
green

<Разделитель>

Символы, определяющие конец подстроки. Разделитель по умолчанию — это пробелы, включая пробелы и непечатаемые символы, такие как newline ('n) и tab (не). Если строки разделены, разделитель опущен из всех подстроок. Пример:

"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address

По умолчанию разделитель опущен из результатов. Чтобы сохранить все или часть разделителя, заключите в скобки часть, которую требуется сохранить. <Max-substrings> Если параметр добавлен, это имеет приоритет, когда команда разбивает коллекцию. Если вы решили включить разделитель в рамках выходных данных, команда возвращает разделитель в рамках выходных данных; Однако разделение строки для возврата разделителя в рамках выходных данных не учитывается как разделение.

Примеры:

"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address

"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address

<Max-substrings>

Указывает максимальное количество подстроок, возвращаемых операцией разделения. Значение по умолчанию — это все подстроки, разделенные разделителем. Если есть дополнительные подстроки, они объединяются в окончательную подстроку. Если есть меньше подстроок, возвращаются все подстроки. Значение 0 возвращает все подстроки.

Пример:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune

Если в -split оператор Max-substrings отправляется несколько строк (массив строк), ограничение применяется к каждой строке отдельно.

$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3

a
b
c
1
2
3,4,5

<Max-substrings> не указывает максимальное количество возвращаемых объектов. В следующем примере <Max-substrings> установлено значение 3. Это приводит к трем значениям подстроки, но в общей сложности пять строк в результирующих выходных данных. Разделитель включается после разделения до достижения максимального числа трех подстроок. Дополнительные разделители в окончательной подстроке становятся частью подстроки.

'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry

Отрицательные значения возвращают количество подстроок, запрошенных начиная с конца входной строки.

Примечание.

В PowerShell 7 добавлена поддержка отрицательных значений.

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune

<ScriptBlock>

Выражение, указывающее правила применения разделителя. Выражение должно оцениваться как $true или $false. Заключите блок скрипта в фигурные скобки.

Пример:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N

tun

<Параметры>

Заключите имя параметра в кавычки. Параметры допустимы только в том случае, если <параметр Max-substrings> используется в инструкции.

Синтаксис параметра Options:

"SimpleMatch [,IgnoreCase]"

"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"

Параметры SimpleMatch:

  • SimpleMatch: при оценке разделителя используйте простое сравнение строк. Нельзя использовать с RegexMatch.
  • IgnoreCase: принудительно не учитывается регистр, даже если указан оператор -cSplit.

Параметры RegexMatch:

  • RegexMatch: используйте сопоставление регулярных выражений для оценки разделителя. Это поведение принимается по умолчанию. Невозможно использовать с SimpleMatch.
  • IgnoreCase: принудительно не учитывается регистр, даже если указан оператор -cSplit.
  • CultureInvariant: игнорирует культурные различия на языке при оценке разделителя. Допустимо только с RegexMatch.
  • IgnorePatternWhitespace: игнорирует незакаченное пробелы и комментарии, помеченные знаком номера (#). Допустимо только с RegexMatch.
  • Многострочный режим: выполняется многострочный ^ режим и $ сопоставляет начало каждой строки вместо начала и конца входной строки.
  • Singleline: режим singleline обрабатывает входную строку как singleLine. Он заставляет . символ соответствовать каждому символу (включая новые линии), а не сопоставлять каждый символ, КРОМЕ новой строки \n.
  • ExplicitCapture: игнорирует неназванные группы совпадений, чтобы в списке результатов возвращались только явные группы записи. Допустимо только с RegexMatch.

УНАРНЫЕ и ДВОИЧНЫЕ ОПЕРАТОРЫ SPLIT

Унарный оператор разделения (-split <string>) имеет более высокий приоритет, чем запятая. В результате при отправке разделенного запятыми списка строк в унарный оператор разделения только первая строка (до разделения первой запятой).

Используйте один из следующих шаблонов для разделения нескольких строк:

  • Используйте оператор двоичного разделения (<string[]> -split <разделитель>)
  • Заключите все строки в скобки
  • Сохраните строки в переменной, а затем отправьте переменную оператору разделения.

Рассмотрим следующий пример:

PS> -split "1 2", "a b"
1
2
a b
PS> "1 2", "a b" -split " "
1
2
a
b
PS> -split ("1 2", "a b")
1
2
a
b
PS> $a = "1 2", "a b"
PS> -split $a
1
2
a
b

Примеры

Следующая инструкция разделяет строку в пробелах.

-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Следующая инструкция разбивает строку на любую запятую.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

Следующая инструкция разделяет строку по шаблону "er".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune

Следующая инструкция выполняет разделение регистра по букве "N".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune

Следующая инструкция разделяет строку на "e" и "t".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
M
rcury,V
nus,
ar
h,Mars,Jupi

r,Sa
urn,Uranus,N
p
un

Следующая инструкция разделяет строку на "e" и "r", но ограничивает результирующей подстроки до шести подстроок.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M

cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune

Следующая инструкция разбивает строку на три подстроки.

"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h

Следующая инструкция разбивает строку на три подстроки, начиная с конца строки.

"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h

Следующая инструкция разделяет две строки на три подстроки. (Ограничение применяется к каждой строке независимо.)

"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h

Следующая инструкция разделяет каждую строку в строке здесь на первой цифре. Он использует параметр Multiline для распознавания начала каждой строки и строки.

Значение 0 представляет значение "возвращать все" параметра Max-substrings. Можно использовать такие параметры, как Multiline, только если задано значение Max-substrings.

$a = @'
1The first line.
2The second line.
3The third of three lines.
'@
$a -split "^\d", 0, "multiline"

The first line.

The second line.

The third of three lines.

В следующей инструкции используется символ обратной косой черты для escape-разделителя точки (.).

По умолчанию RegexMatch точка, заключенная в кавычки (".") интерпретируется для сопоставления любого символа, за исключением нового символа. В результате оператор Split возвращает пустую строку для каждого символа, кроме новой строки.

"This.is.a.test" -split "\."
This
is
a
test

В следующей инструкции используется параметр SimpleMatch, чтобы направить оператор -split для интерпретации разделителя точки (.).

Значение 0 представляет значение "возвращать все" параметра Max-substrings. Можно использовать такие параметры, как SimpleMatch, только если задано значение Max-substrings.

"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test

Следующая инструкция разделяет строку по одному из двух разделителей в зависимости от значения переменной.

$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
 Address, City, State, Zip

См. также