Delen via


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 waarmee de voorwaarden worden opgegeven waaronder het scheidingsteken overeenkomt, zoals SimpleMatch en Multiline.

Syntaxis

In het volgende diagram ziet u de syntaxis voor de operator -split.

De parameternamen worden niet weergegeven in de opdracht. Alleen de parameterwaarden opnemen. 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 (een splitsinstructie met een scheidingsteken of scriptblok) vervangen -iSplit-cSplit of vervangen -split door een binaire splitsinstructie. De -iSplit operatoren zijn -split niet hoofdlettergevoelig. De -cSplit operator is hoofdlettergevoelig, wat betekent dat er 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 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 uit 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 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 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 laatste 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 meerdere tekenreeksen (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 een totaal van vijf tekenreeksen in de resulterende uitvoer. Het scheidingsteken wordt na de splitsingen opgenomen 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 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 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: forceer hoofdlettergevoelige overeenkomsten, zelfs als de operator -cSplit is opgegeven.

De regexMatch-opties zijn:

  • RegexMatch: gebruik reguliere expressiekoppeling om het scheidingsteken te evalueren. Dit is het standaardgedrag. Kan niet worden gebruikt met SimpleMatch.
  • IgnoreCase: forceer hoofdlettergevoelige overeenkomsten, zelfs als de operator -cSplit is opgegeven.
  • CultureInvariant: negeert culturele verschillen in taal 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: De modus Singleline behandelt de invoertekenreeks als een SingleLine. Hiermee dwingt u af dat het . teken overeenkomt met elk teken (inclusief nieuwe lijnen), in plaats van elk teken, behalve de nieuwe regel \n.
  • ExplicitCapture: negeert niet-benoemde overeenkomende groepen, 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 splitsingsoperator 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>< splitsen)
  • Plaats alle tekenreeksen tussen haakjes
  • Sla de tekenreeksen op in een variabele en verzend de variabele vervolgens naar de splitsoperator

Kijk een 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

Met de volgende instructie wordt de tekenreeks gesplitst op witruimte.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Met de volgende instructie wordt de tekenreeks gesplitst in een 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 here-string 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-subtekenreeksen. U kunt opties, zoals Multiline, 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 scheidingsteken (.) van het punt te ontsnappen.

Met de standaardwaarde, RegexMatch, wordt de punt tussen aanhalingstekens (".") geïnterpreteerd zodat deze overeenkomen met elk teken, met uitzondering van een nieuw regelteken. Als gevolg hiervan retourneert de splitsinstructie een lege regel voor elk teken, behalve nieuwe regel.

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

In de volgende instructie wordt de simplematch-optie gebruikt om de operator -split om het scheidingsteken voor punt (.) letterlijk te interpreteren.

De 0 vertegenwoordigt de waarde 'return all' van de parameter Max-subtekenreeksen. U kunt opties, zoals SimpleMatch, alleen gebruiken wanneer de waarde voor 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

Zie ook