Dela via


Om delning

KORT BESKRIVNING

Förklarar hur du använder operatorn Dela för att dela upp en eller flera strängar i understrängar.

LÅNG BESKRIVNING

Operatorn Dela delar upp en eller flera strängar i understrängar. Du kan ändra följande element i åtgärden Dela:

  • Avgränsare. Standardvärdet är blanksteg, men du kan ange tecken, strängar, mönster eller skriptblock som anger avgränsaren. Operatorn Split i PowerShell använder ett reguljärt uttryck i avgränsare i stället för ett enkelt tecken.
  • Maximalt antal delsträngar. Standardvärdet är att returnera alla delsträngar. Om du anger ett tal som är mindre än antalet delsträngar sammanfogas de återstående delsträngarna i den sista delsträngen.
  • Alternativ som anger de villkor under vilka avgränsare matchas, till exempel SimpleMatch och Multiline.

SYNTAX

Följande diagram visar syntaxen för operatorn -split.

Parameternamnen visas inte i kommandot . Inkludera endast parametervärdena. Värdena måste visas i den ordning som anges i syntaxdiagrammet.

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

Du kan ersätta -iSplit eller -cSplit för -split i valfri binär split-instruktion (en Split-instruktion som innehåller en avgränsare eller ett skriptblock). Operatorerna -iSplit och -split är skiftlägesokänsliga. Operatorn -cSplit är skiftlägeskänslig, vilket innebär att ärendet beaktas när avgränsarreglerna tillämpas.

PARAMETRAR

<Sträng> eller <sträng[]>

Anger en eller flera strängar som ska delas. Om du skickar flera strängar delas alla strängar upp med samma avgränsarregler.

Exempel:

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

<Avgränsare>

De tecken som identifierar slutet på en delsträng. Standardavgränsaren är blanksteg, inklusive blanksteg och icke-utskrivbara tecken, till exempel ny rad ('n) och flik (inte). När strängarna delas utelämnas avgränsaren från alla understrängar. Exempel:

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

Som standard utelämnas avgränsare från resultaten. Om du vill bevara hela eller delar av avgränsare omger du den del som du vill bevara inom parentes. Om parametern <Max-substrings> läggs till har detta företräde när kommandot delar upp samlingen. Om du väljer att inkludera en avgränsare som en del av utdata returnerar kommandot avgränsare som en del av utdata. Att dela upp strängen för att returnera avgränsaren som en del av utdata räknas dock inte som en delning.

Exempel:

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

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

I följande exempel <anges Max-substrings> till 3. Detta resulterar i tre delningar av strängvärdena, men totalt fem strängar i de resulterande utdata. avgränsare inkluderas efter delningarna tills maximalt tre delsträngar har nåtts. Ytterligare avgränsare i den slutliga delsträngen blir en del av delsträngen.

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

<Max-delsträngar>

Anger det maximala antalet gånger som en sträng delas. Standardvärdet är alla delsträngar som delas upp av avgränsare. Om det finns fler delsträngar sammanfogas de till den slutliga delsträngen. Om det finns färre delsträngar returneras alla understrängar. Värdet 0 och negativa värden returnerar alla delsträngar.

Max-delsträngar anger inte det maximala antalet objekt som returneras. dess värde är lika med det maximala antalet gånger som en sträng delas. Om du skickar mer än en sträng (en matris med strängar) till operatorn Dela tillämpas max-delsträngsgränsen på varje sträng separat.

Exempel:

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

<ScriptBlock>

Ett uttryck som anger regler för att tillämpa avgränsare. Uttrycket måste utvärderas till $true eller $false. Omslut skriptblocket i klammerparenteser.

Exempel:

$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

<Alternativ>

Omslut alternativnamnet inom citattecken. Alternativen är endast giltiga när parametern <Max-substrings> används i -instruktionen.

Syntaxen för parametern Alternativ är:

"SimpleMatch [,IgnoreCase]"

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

SimpleMatch-alternativen är:

  • SimpleMatch: Använd enkel strängjämförelse när du utvärderar avgränsaren. Kan inte användas med RegexMatch.
  • IgnoreCase: Tvingar skiftlägesokänslig matchning, även om operatorn -cSplit har angetts.

Alternativen för RegexMatch är:

  • RegexMatch: Använd matchning av reguljära uttryck för att utvärdera avgränsare. Det här är standardbeteendet. Kan inte användas med SimpleMatch.
  • IgnoreCase: Tvingar skiftlägesokänslig matchning, även om operatorn -cSplit har angetts.
  • CultureInvariant: Ignorerar kulturella skillnader i språk när avgränsare utvärderas. Endast giltigt med RegexMatch.
  • IgnorePatternWhitespace: Ignorerar ej inkapslade tomt utrymme och kommentarer markerade med nummertecknet (#). Endast giltigt med RegexMatch.
  • Flera rader: Flerradsläge tvingar ^ och $ matchar början av varje rad i stället för början och slutet av indatasträngen.
  • Enkelrad: Singleline-läget behandlar indatasträngen som en singleline. Det tvingar . tecknet att matcha varje tecken (inklusive nya linjer), i stället för att matcha varje tecken UTOM den nya rad \n.
  • ExplicitCapture: Ignorerar icke-namngivna matchningsgrupper så att endast explicita avbildningsgrupper returneras i resultatlistan. Endast giltigt med RegexMatch.

UNARY OCH BINÄRA DELNINGSOPERATORER

Operatorn unary split (-split <string>) har högre prioritet än ett kommatecken. Om du därför skickar en kommaavgränsad lista med strängar till den unary split-operatorn är det bara den första strängen (innan det första kommatecknet) delas.

Använd något av följande mönster för att dela upp fler än en sträng:

  • Använd operatorn för binär delning (<sträng[]> -split <avgränsare>)
  • Omslut alla strängar i parenteser
  • Lagra strängarna i en variabel och skicka sedan variabeln till delningsoperatorn

Se följande exempel:

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

EXEMPEL

Följande instruktion delar upp strängen i blanksteg.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Följande instruktion delar upp strängen på alla kommatecken.

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

Följande instruktion delar strängen vid mönstret "er".

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

Följande instruktion utför en skiftlägeskänslig delning med bokstaven "N".

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

Följande instruktion delar upp strängen på "e" och "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

Följande instruktion delar strängen vid "e" och "r", men begränsar de resulterande delsträngarna till sex delsträngar.

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

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

Följande instruktion delar upp en sträng i tre delsträngar.

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

Följande instruktion delar upp två strängar i tre understrängar. (Gränsen tillämpas på varje sträng oberoende av varandra.)

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

Följande instruktion delar varje rad i här-strängen vid den första siffran. Alternativet Flera rader används för att identifiera början av varje rad och sträng.

0 representerar värdet "returnera alla" för parametern Max-substrings. Du kan bara använda alternativ, till exempel Multiline, när värdet Max-substrings har angetts.

$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.

Följande instruktion använder omvänt snedstreck för att undkomma punktavgränsaren (.).

Med standardvärdet RegexMatch tolkas punkten inom citattecken (".") så att den matchar alla tecken förutom ett nytt radtecken. Därför returnerar split-instruktionen en tom rad för varje tecken utom ny rad.

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

Följande instruktion använder alternativet SimpleMatch för att dirigera operatorn -split för att tolka punktavgränsaren (.) bokstavligen.

0 representerar värdet "returnera alla" för parametern Max-substrings. Du kan bara använda alternativ, till exempel SimpleMatch, när värdet Max-substrings har angetts.

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

Följande instruktion delar upp strängen på en av två avgränsare, beroende på värdet för en variabel.

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

SE ÄVEN

Split-Path

about_Operators

about_Comparison_Operators

about_Join