Dela via


about_Split

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 Dela 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 senaste delsträngen.
  • Alternativ som anger under vilka villkor 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 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 ('t). 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 en del av avgränsare, omsluter 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

<Max-substrings>

Anger det maximala antalet delsträngar som returneras av delningsåtgärden. 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 returnerar alla delsträngar.

Exempel:

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

Om du skickar mer än en sträng (en matris med strängar) till operatorn -split Max-substrings tillämpas gränsen på varje sträng separat.

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

a
b
c
1
2
3,4,5

<Max-substrings> anger inte det maximala antalet objekt som returneras. I följande exempel <Max-substrings> anges till 3. Detta resulterar i tre delsträngsvärden, 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 sista delsträngen blir en del av delsträngen.

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

Negativa värden returnerar mängden understrängar som begärts från slutet av indatasträngen.

Kommentar

Stöd för negativa värden har lagts till i PowerShell 7.

$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. Det går inte att använda 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. Det går inte att använda med SimpleMatch.
  • IgnoreCase: Tvingar skiftlägesokänslig matchning, även om operatorn -cSplit har angetts.
  • CultureInvariant: Ignorerar kulturella skillnader i språk vid utvärdering av avgränsare. Endast giltigt med RegexMatch.
  • IgnorePatternWhitespace: Ignorerar ej kapslade blanksteg och kommentarer markerade med nummertecknet (#). Endast giltigt med RegexMatch.
  • Flera rader: Flerradsläget tvingar ^ och $ matchar början av varje rad i stället för början och slutet av indatasträngen.
  • Enkelrad: Enkelradsläge behandlar indatasträngen som en enskild rad. Det tvingar . tecknet att matcha varje tecken (inklusive nya streck), 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 SPLIT OPERATORER

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

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[]> - delad <avgränsare>)
  • Omslut alla strängar inom parenteser
  • Lagra strängarna i en variabel och skicka sedan variabeln till delningsoperatorn

Ta följande som 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 på 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 upp strängen i 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 uppdelning på 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 upp 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 en sträng i tre delsträngar från slutet av strängen.

"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 upp varje rad i strängen här 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 (.).

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