about_Split

Krátký popis

Vysvětluje, jak pomocí operátoru Split rozdělit jeden nebo více řetězců na podřetězce.

Dlouhý popis

Operátor Split rozdělí jeden nebo více řetězců na podřetězce. Můžete změnit následující prvky operace Split:

  • Oddělovač. Výchozí hodnota je prázdné znaky, ale můžete zadat znaky, řetězce, vzory nebo bloky skriptu, které určují oddělovač. Operátor Split v PowerShellu používá regulární výraz v oddělovači místo jednoduchého znaku.
  • Maximální počet podřetěžců Ve výchozím nastavení se vrátí všechny podřetězí. Pokud zadáte číslo menší než počet podřetězenců, zřetězení zbývajících podřetězenců v posledním podřetědci.
  • Možnosti, které určují podmínky, za kterých se oddělovač shoduje, například SimpleMatch a Multiline.

Syntaxe

Následující diagram znázorňuje syntaxi operátoru -split.

Názvy parametrů se v příkazu nezobrazí. Zahrňte pouze hodnoty parametrů. Hodnoty se musí zobrazit v pořadí uvedeném v diagramu syntaxe.

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

V libovolném binárním příkazu Split (příkaz Split, který obsahuje oddělovač nebo blok skriptu), můžete ho nahradit -iSplit nebo -cSplit za -split ně použít. Operátory -iSplit nerozlišují malá a -split velká písmena. Operátor -cSplit rozlišují malá a velká písmena, což znamená, že při použití pravidel oddělovače se tato malá a velká písmena považují.

Parametry

<Řetězec nebo <řetězec>[]>

Určuje jeden nebo více řetězců, které se mají rozdělit. Pokud odešlete více řetězců, všechny řetězce se rozdělí pomocí stejných pravidel oddělovače.

Příklad:

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

<Oddělovač>

Znaky, které identifikují konec podřetětěce. Výchozí oddělovač je prázdný znak, včetně mezer a netisknutelných znaků, například newline ('n) a tab (t). Při rozdělení řetězců je oddělovač vynechán ze všech podřetězců. Příklad:

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

Ve výchozím nastavení je oddělovač z výsledků vynechán. Chcete-li zachovat všechny oddělovače nebo jeho část, uzavřete do závorek část, kterou chcete zachovat. <Max-substrings> Pokud je parametr přidaný, má tento parametr přednost, když příkaz rozdělí kolekci. Pokud se rozhodnete zahrnout oddělovač jako součást výstupu, příkaz vrátí oddělovač jako součást výstupu; Rozdělením řetězce, který vrátí oddělovač jako součást výstupu, se však nezapočítává jako rozdělení.

Příklady:

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

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

<Max-substrings>

Určuje maximální počet podřetěžců vrácených operací rozdělení. Ve výchozím nastavení jsou všechny podřetězeny rozdělené oddělovačem. Pokud existuje více podřetězenců, jsou zřetězeny do konečného podřetětěce. Pokud existuje méně podřetěžců, vrátí se všechny podřetěžce. Hodnota 0 vrátí všechny podřetěžce.

Příklad:

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

Pokud operátoru odešlete více než jeden řetězec (pole řetězců), -splitMax-substrings použije se limit pro každý řetězec zvlášť.

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

a
b
c
1
2
3,4,5

<Max-substrings> nezadá maximální počet vrácených objektů. V následujícím příkladu <Max-substrings> je nastavená hodnota 3. Výsledkem jsou tři hodnoty podřetězce, ale celkem pět řetězců ve výsledném výstupu. Oddělovač je zahrnut po rozdělení, dokud nedosáhnete maximálního počtu tří podřetězenců. Další oddělovače v posledním podřetětědci se stanou součástí podřetětědce.

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

Záporné hodnoty vrátí množství podřetězců požadovaných od konce vstupního řetězce.

Poznámka:

Podpora záporných hodnot byla přidána v PowerShellu 7.

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

<ScriptBlock>

Výraz, který určuje pravidla pro použití oddělovače. Výraz musí být vyhodnocen jako $true nebo $false. Uzavřete blok skriptu do složených závorek.

Příklad:

$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

<Možnosti>

Uzavřete název možnosti do uvozovek. Možnosti jsou platné pouze v případech, <kdy se v příkazu použije parametr Max-substrings> .

Syntaxe parametru Options je:

"SimpleMatch [,IgnoreCase]"

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

Možnosti SimpleMatch jsou:

  • SimpleMatch: Při vyhodnocování oddělovače použijte jednoduché porovnání řetězců. Nelze použít s regexMatch.
  • IgnoreCase: Vynutí porovnávání nerozlišující malá a velká písmena, i když je zadán operátor -cSplit.

Možnosti RegexMatch jsou:

  • RegexMatch: K vyhodnocení oddělovače použijte porovnávání regulárních výrazů. Toto je výchozí chování. Nelze použít s SimpleMatch.
  • IgnoreCase: Vynutí porovnávání nerozlišující malá a velká písmena, i když je zadán operátor -cSplit.
  • CultureInvariant: Při vyhodnocování oddělovače ignoruje kulturní rozdíly v jazyce. Platné pouze u regexMatch.
  • IgnorePatternWhitespace: Přeskočí nepozorované prázdné znaky a komentáře označené znakem čísla (#). Platné pouze u regexMatch.
  • Víceřádkový režim: Víceřádkový režim vynutí ^ a $ porovná počáteční konec každého řádku místo začátku a konce vstupního řetězce.
  • Singleline: Režim singleline považuje vstupní řetězec za SingleLine. Vynutí, aby znak odpovídal každému . znaku (včetně nových spojnic), místo aby odpovídal každému znaku KROMĚ nového řádku \n.
  • ExplicitCapture: Ignoruje nenázvové skupiny shody, aby se v seznamu výsledků vrátily pouze explicitní skupiny zachycení. Platné pouze u regexMatch.

UNÁRNÍ A BINÁRNÍ OPERÁTORY ROZDĚLENÍ

Unární operátor rozdělení (-split <string>) má vyšší prioritu než čárka. Pokud tedy odešlete čárkami oddělený seznam řetězců do unárního operátoru rozdělení, rozdělí se pouze první řetězec (před rozdělením prvního čárky).

K rozdělení více než jednoho řetězce použijte jeden z následujících vzorů:

  • Použití binárního operátoru rozdělení (<string[]> -split <delimiter>)
  • Uzavřete všechny řetězce do závorek.
  • Uložte řetězce do proměnné a pak ji odešlete operátoru rozdělení.

Představte si následující příklad:

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

Příklady

Následující příkaz rozdělí řetězec na prázdné znaky.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Následující příkaz rozdělí řetězec na libovolnou čárku.

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

Následující příkaz rozdělí řetězec na vzor "er".

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

Následující příkaz provede rozdělení s rozlišováním velkých a malých písmen v písmenu "N".

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

Následující příkaz rozdělí řetězec na "e" a "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

Následující příkaz rozdělí řetězec na "e" a "r", ale omezí výsledné podřetězce na šest podřetězců.

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

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

Následující příkaz rozdělí řetězec na tři podřetězce.

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

Následující příkaz rozdělí řetězec na tři podřetězce počínaje koncem řetězce.

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

Následující příkaz rozdělí dva řetězce na tři podřetězce. (Omezení se použije u každého řetězce nezávisle.)

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

Následující příkaz rozdělí každý řádek v tomto řetězci na první číslici. Pomocí víceřádkové možnosti rozpozná začátek každého řádku a řetězce.

0 představuje hodnotu "return all" parametru Max-substrings. Možnosti, například Víceřádkové, můžete použít pouze v případě, že je zadána hodnota 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.

Následující příkaz používá znak zpětného lomítka k řídicímu oddělovači tečky (.).

Ve výchozím nastavení regexMatch se tečka uzavřená v uvozovkách (".") interpretuje tak, aby odpovídala jakémukoli znaku s výjimkou znaku nového řádku. V důsledku toho příkaz Split vrátí prázdný řádek pro každý znak s výjimkou nového řádku.

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

Následující příkaz používá simpleMatch možnost směrovat -split operátor interpretovat tečka (.) oddělovač doslova.

0 představuje hodnotu "return all" parametru Max-substrings. Možnosti, například SimpleMatch, můžete použít pouze v případě, že je zadána hodnota Max-substrings.

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

Následující příkaz rozdělí řetězec na jeden ze dvou oddělovačů v závislosti na hodnotě proměnné.

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

Viz také