about_Split
Korte beschrijving
Hierin wordt uitgelegd hoe u de splitsoperator gebruikt om een of meer tekenreeksen te splitsen in subtekenreeksen.
Lange beschrijving
De splitsoperator splitst een of meer tekenreeksen in subtekenreeksen. U kunt de volgende elementen van de splitsbewerking wijzigen:
- Scheidingsteken. De standaardwaarde is witruimte, maar u kunt tekens, tekenreeksen, patronen of scriptblokken opgeven die het scheidingsteken opgeven. De splitsoperator in PowerShell gebruikt een reguliere expressie in het scheidingsteken in plaats van een eenvoudig teken.
- Maximum aantal subtekenreeksen. De standaardinstelling is om alle subtekenreeksen te retourneren. Als u een getal opgeeft dat kleiner is dan het aantal subtekenreeksen, worden de resterende subtekenreeksen samengevoegd in de laatste subtekenreeks.
- Opties die de voorwaarden opgeven waaronder het scheidingsteken overeenkomt, zoals SimpleMatch en Multiline.
Syntax
In het volgende diagram ziet u de syntaxis voor de operator -split.
De parameternamen worden niet weergegeven in de opdracht. Neem alleen de parameterwaarden op. De waarden moeten worden weergegeven in de volgorde die is opgegeven in het syntaxisdiagram.
-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
U kunt of -cSplit
-split
vervangen -iSplit
door in elke binaire splitsinstructie (een splitsinstructie die een scheidingsteken of scriptblok bevat). De -iSplit
operators en -split
zijn niet hoofdlettergevoelig. De -cSplit
operator is hoofdlettergevoelig, wat betekent dat hoofdlettergebruik wordt overwogen wanneer de scheidingstekenregels worden toegepast.
Parameters
<Tekenreeks> of <tekenreeks[]>
Hiermee geeft u een of meer tekenreeksen die moeten worden gesplitst. Als u meerdere tekenreeksen verzendt, worden alle tekenreeksen gesplitst met behulp van dezelfde regels voor scheidingstekens.
Voorbeeld:
-split "red yellow blue green"
red
yellow
blue
green
<Scheidingsteken>
De tekens waarmee het einde van een subtekenreeks wordt aangegeven. Het standaardscheidingsteken is witruimte, inclusief spaties en niet-afdrukbare tekens, zoals nieuwe regel ('n) en tab ('t). Wanneer de tekenreeksen worden gesplitst, wordt het scheidingsteken weggelaten uit alle subtekenreeksen. Voorbeeld:
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
Standaard wordt het scheidingsteken weggelaten in de resultaten. Als u het scheidingsteken geheel of gedeeltelijk wilt behouden, plaatst u het deel dat u wilt behouden tussen haakjes.
Als de <Max-substrings>
parameter wordt toegevoegd, heeft dit voorrang wanneer uw opdracht de verzameling splitst. Als u ervoor kiest om een scheidingsteken op te nemen als onderdeel van de uitvoer, retourneert de opdracht het scheidingsteken als onderdeel van de uitvoer; Het splitsen van de tekenreeks om het scheidingsteken als onderdeel van de uitvoer te retourneren, telt echter niet als een splitsing.
Voorbeelden:
"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address
"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address
<Max-substrings>
Hiermee geeft u het maximum aantal subtekenreeksen op dat wordt geretourneerd door de splitsbewerking. De standaardinstelling is dat alle subtekenreeksen worden gesplitst door het scheidingsteken. Als er meer subtekenreeksen zijn, worden deze samengevoegd tot de uiteindelijke subtekenreeks. Als er minder subtekenreeksen zijn, worden alle subtekenreeksen geretourneerd. Een waarde van 0 retourneert alle subtekenreeksen.
Voorbeeld:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune
Als u meer dan één tekenreeks (een matrix van tekenreeksen) naar de -split
operator verzendt, wordt de Max-substrings
limiet op elke tekenreeks afzonderlijk toegepast.
$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3
a
b
c
1
2
3,4,5
<Max-substrings>
geeft niet het maximum aantal objecten op dat wordt geretourneerd. In het volgende voorbeeld <Max-substrings>
is ingesteld op 3.
Dit resulteert in drie subtekenreekswaarden, maar in totaal vijf tekenreeksen in de resulterende uitvoer. Het scheidingsteken wordt opgenomen na de splitsingen totdat het maximum van drie subtekenreeksen is bereikt. Extra scheidingstekens in de uiteindelijke subtekenreeks worden onderdeel van de subtekenreeks.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry
Negatieve waarden retourneren de hoeveelheid aangevraagde subtekenreeksen vanaf het einde van de invoertekenreeks.
Notitie
Ondersteuning voor negatieve waarden is toegevoegd in PowerShell 7.
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune
<ScriptBlock>
Een expressie waarmee regels worden opgegeven voor het toepassen van het scheidingsteken. De expressie moet $true of $false. Plaats het scriptblok tussen accolades.
Voorbeeld:
$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
<Opties>
Plaats de naam van de optie tussen aanhalingstekens. Opties zijn alleen geldig wanneer de <parameter Max-subtekenreeksen> wordt gebruikt in de -instructie.
De syntaxis voor de parameter Options is:
"SimpleMatch [,IgnoreCase]"
"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"
De SimpleMatch-opties zijn:
- SimpleMatch: gebruik eenvoudige tekenreeksvergelijking bij het evalueren van het scheidingsteken. Kan niet worden gebruikt met RegexMatch.
- IgnoreCase: dwingt niet-hoofdlettergevoelige overeenkomsten af, zelfs als de operator -cSplit is opgegeven.
De RegexMatch-opties zijn:
- RegexMatch: gebruik reguliere expressiekoppeling om het scheidingsteken te evalueren. Dit is de standaardinstelling. Kan niet worden gebruikt met SimpleMatch.
- IgnoreCase: dwingt niet-hoofdlettergevoelige overeenkomsten af, zelfs als de operator -cSplit is opgegeven.
- CultureInvariant: hiermee worden culturele verschillen in taal genegeerd bij het evalueren van het scheidingsteken. Alleen geldig met RegexMatch.
- IgnorePatternWhitespace: negeert witruimte en opmerkingen die zijn gemarkeerd met het nummerteken (#). Alleen geldig met RegexMatch.
- Meerdere regels: de modus Met meerdere regels dwingt
^
en$
af om het begineinde van elke regel te vinden in plaats van het begin en einde van de invoertekenreeks. - Singleline: in de modus Singleline wordt de invoertekenreeks behandeld als een SingleLine.
Het zorgt ervoor dat het
.
teken overeenkomt met elk teken (inclusief nieuwe regels), in plaats van dat het overeenkomt met elk teken, BEHALVE de nieuwe regel\n
. - ExplicitCapture: negeert niet-benoemde overeenkomende groepen, zodat alleen expliciete opnamegroepen worden geretourneerd in de lijst met resultaten. Alleen geldig met RegexMatch.
UNARY- en BINAIRE SPLITSOPERATORS
De unaire splitsoperator (-split <string>
) heeft een hogere prioriteit dan een komma. Als u een door komma's gescheiden lijst met tekenreeksen naar de unaire splitsoperator verzendt, wordt alleen de eerste tekenreeks (vóór de eerste komma) gesplitst.
Gebruik een van de volgende patronen om meer dan één tekenreeks te splitsen:
- Gebruik de binaire splitsoperator (<tekenreeks[]> -splitsscheidingsteken<>)
- Zet alle tekenreeksen tussen haakjes
- Sla de tekenreeksen op in een variabele en verzend de variabele vervolgens naar de split-operator
Kijk eens naar het volgende voorbeeld:
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
Voorbeelden
De volgende instructie splitst de tekenreeks op witruimte.
-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
De volgende instructie splitst de tekenreeks op elke komma.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Met de volgende instructie wordt de tekenreeks gesplitst met het patroon 'er'.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
Met de volgende instructie wordt een hoofdlettergevoelige splitsing uitgevoerd op de letter 'N'.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune
De volgende instructie splitst de tekenreeks op 'e' en '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
De volgende instructie splitst de tekenreeks op 'e' en 'r', maar beperkt de resulterende subtekenreeksen tot zes subtekenreeksen.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M
cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune
Met de volgende instructie wordt een tekenreeks gesplitst in drie subtekenreeksen.
"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
Met de volgende instructie wordt een tekenreeks gesplitst in drie subtekenreeksen vanaf het einde van de tekenreeks.
"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h
Met de volgende instructie worden twee tekenreeksen gesplitst in drie subtekenreeksen. (De limiet wordt afzonderlijk toegepast op elke tekenreeks.)
"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h
De volgende instructie splitst elke regel in de here-tekenreeks op het eerste cijfer. De optie Meerdere regels wordt gebruikt om het begin van elke regel en tekenreeks te herkennen.
De 0 vertegenwoordigt de waarde 'alles retourneren' van de parameter Max-subtekenreeksen. U kunt opties, zoals Meerdere regels, alleen gebruiken wanneer de waarde Max-subtekenreeksen is opgegeven.
$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.
Met de volgende instructie wordt het backslash-teken gebruikt om het scheidingsteken van de punt (.) te laten ontsnappen.
Met de standaardwaarde RegexMatch wordt de punt tussen aanhalingstekens (".") geïnterpreteerd als een willekeurig teken, met uitzondering van een nieuw regelteken. Als gevolg hiervan retourneert de instructie Splitsen een lege regel voor elk teken, behalve nieuwe regel.
"This.is.a.test" -split "\."
This
is
a
test
De volgende instructie gebruikt de optie SimpleMatch om de operator -split om het scheidingsteken van de punt (.) letterlijk te interpreteren.
De 0 vertegenwoordigt de waarde 'alles retourneren' van de parameter Max-subtekenreeksen. U kunt opties, zoals SimpleMatch, alleen gebruiken wanneer de waarde Max-subtekenreeksen is opgegeven.
"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
De volgende instructie splitst de tekenreeks op een van twee scheidingstekens, afhankelijk van de waarde van een variabele.
$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
Address, City, State, Zip