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 operator Split in PowerShell maakt gebruik van een reguliere expressie in het scheidingsteken in plaats van een eenvoudig teken.
- Maximum aantal subtekenreeksen. De standaardwaarde 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 waarmee de voorwaarden worden opgegeven 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 een binaire splitsinstructie vervangen -iSplit of -cSplit gebruiken -split (een Split-instructie die een scheidingsteken of scriptblok bevat). De -iSplit operators en -split operators zijn niet hoofdlettergevoelig. De -cSplit operator is hoofdlettergevoelig, wat betekent dat deze case wordt overwogen wanneer de regels voor scheidingstekens 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 dezelfde scheidingstekenregels.
Voorbeeld:
-split "red yellow blue green"
red
yellow
blue
green
<Scheidingsteken>
De tekens die het einde van een subtekenreeks identificeren. Het standaardscheidingsteken is witruimte, inclusief spaties en niet-afdrukbare tekens, zoals newline ('n) en tab ('t'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 uit de resultaten. Als u het scheidingsteken geheel of gedeeltelijk wilt behouden, plaatst u haakjes tussen haakjes het gedeelte dat u wilt behouden.
Als de <Max-substrings> parameter wordt toegevoegd, heeft dit voorrang wanneer de 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 door de splitsbewerking wordt geretourneerd. De standaardinstelling is dat alle subtekenreeksen worden gesplitst door het scheidingsteken. Als er meer subtekenreeksen zijn, worden deze samengevoegd met 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 met tekenreeksen) naar de -split operator verzendt, wordt de Max-substrings limiet afzonderlijk toegepast op elke tekenreeks.
$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 laatste 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 die regels opgeeft voor het toepassen van het scheidingsteken. De expressie moet $true of $false evalueren. 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 optienaam tussen aanhalingstekens. Opties zijn alleen geldig wanneer de <parameter Max-subtekenreeksen> wordt gebruikt in de instructie.
De syntaxis voor de parameter Opties 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 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 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 niet-gescapede witruimte en opmerkingen die zijn gemarkeerd met het nummerteken (#). Alleen geldig met RegexMatch.
- Multiline: De multilinemodus dwingt
^af en$komt overeen met het begin van elke regel 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 lijnen), in plaats van elk teken te vergelijken, behalve de nieuwe regel\n. - ExplicitCapture: negeert niet-benoemde overeenkomstgroepen, zodat alleen expliciete opnamegroepen worden geretourneerd in de resultatenlijst. Alleen geldig met RegexMatch.
UNAIRE EN BINAIRE SPLITSOPERATORS
De unaire splitsingsoperator (-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[]> -scheidingsteken><)
- Plaats alle tekenreeksen tussen haakjes
- Sla de tekenreeksen op in een variabele en verzend de variabele vervolgens naar de splitsoperator
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 een willekeurige 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 op 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
Met de volgende instructie wordt de tekenreeks gesplitst 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 onafhankelijk van elke tekenreeks toegepast.)
"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 hier-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 'return all' van de parameter Max-substrings. U kunt opties, zoals Meerdere regels, alleen gebruiken wanneer de waarde voor 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.
In de volgende instructie wordt het backslash-teken gebruikt om het puntscheidingsteken (.) te ontsnappen.
Met de standaardwaarde RegexMatch wordt de punt tussen aanhalingstekens (".") geïnterpreteerd zodat deze overeenkomt met elk teken, met uitzondering van een nieuw regelteken. Als gevolg hiervan retourneert de splitsinstructie een lege regel voor elk teken, met uitzondering van nieuwe regel.
"This.is.a.test" -split "\."
This
is
a
test
In de volgende instructie wordt de optie SimpleMatch gebruikt om de operator -split om het scheidingsteken (.) letterlijk te interpreteren.
De 0 vertegenwoordigt de waarde 'return all' van de parameter Max-substrings. 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
Met de volgende instructie wordt de tekenreeks gesplitst 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