Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 skriptové bloky, 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 scriptblock) můžete nahradit -isplit nebo -csplit za -split ně použít příkaz Split. Operátory -isplit a -split nerozlišují malá a 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 velká a malá písmena považují.
Parametry
<řetězcové> 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če >
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.
Pokud je přidaný parametr <Max-substrings>, 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 do operátoru -split odešlete více než jeden řetězec (pole řetězců), použije se limit Max-substrings pro každý řetězec samostatně.
$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3
a
b
c
1
2
3,4,5
<Max-substrings> neurčí maximální počet vrácených objektů. V následujícím příkladu je <Max-substrings> nastavena na hodnotu 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 skriptblock 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žností >
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í bez rozlišování velkých a malých písmen, i když je zadaný 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í bez rozlišování velkých a malých písmen, i když je zadaný operátor -csplit.
- CultureInvariant: Při vyhodnocování oddělovače ignoruje kulturní rozdíly v jazyce. Platné pouze u regexMatch.
-
IgnorePatternWhitespace: Ignoruje nepozorované prázdné znaky a komentáře označené znakem hash (
#). Platné pouze u regexMatch. -
víceřádkové: Víceřádkový režim vynutí
^a$, aby odpovídaly začátku konce 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 čar), 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 rozdělovacího operátoru (<řetězec[]> -split <oddělovač>)
- 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í.
Podívejte se na 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
Examples
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 operátor -split 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é
- rozdělené cesty
- about_Operators
- about_Comparison_Operators
- about_Join