about_Split

Kurze Beschreibung

Erläutert, wie der Split-Operator verwendet wird, um eine oder mehrere Zeichenfolgen in Teilzeichenfolgen aufzuteilen.

Lange Beschreibung

Der Split-Operator teilt eine oder mehrere Zeichenfolgen in Teilzeichenfolgen auf. Sie können die folgenden Elemente des Split-Vorgangs ändern:

  • Trennzeichen. Der Standardwert ist Leerzeichen, Sie können jedoch Zeichen, Zeichenfolgen, Muster oder Skriptblöcke angeben, die das Trennzeichen angeben. Der Split-Operator in PowerShell verwendet einen regulären Ausdruck im Trennzeichen anstelle eines einfachen Zeichens.
  • Maximale Anzahl von Teilzeichenfolgen. Standardmäßig werden alle Teilzeichenfolgen zurückgegeben. Wenn Sie eine Zahl angeben, die kleiner als die Anzahl von Teilzeichenfolgen ist, werden die neu Standard ing-Teilzeichenfolgen in der letzten Teilzeichenfolge verkettet.
  • Optionen, die die Bedingungen angeben, unter denen das Trennzeichen abgeglichen wird, z. B. SimpleMatch und Multiline.

Syntax

Das folgende Diagramm zeigt die Syntax für den Operator "-split".

Die Parameternamen werden nicht im Befehl angezeigt. Schließen Sie nur die Parameterwerte ein. Die Werte müssen in der im Syntaxdiagramm angegebenen Reihenfolge angezeigt werden.

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

Sie können eine binäre Split-Anweisung (eine Split-Anweisung, die ein Trennzeichen oder Skriptblock enthält) ersetzen -iSplit-cSplit oder dafür -split verwenden. Bei den -iSplit Operatoren wird die Groß-/ -split Kleinschreibung nicht beachtet. Bei dem -cSplit Operator wird die Groß-/Kleinschreibung beachtet, d. h., die Groß-/Kleinschreibung wird berücksichtigt, wenn die Trennzeichenregeln angewendet werden.

Parameter

<Zeichenfolge oder <Zeichenfolge>[]>

Gibt eine oder mehrere Zeichenfolgen an, die geteilt werden sollen. Wenn Sie mehrere Zeichenfolgen übermitteln, werden alle Zeichenfolgen mit den gleichen Trennzeichenregeln geteilt.

Beispiel:

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

<Trennzeichen>

Die Zeichen, die das Ende einer Teilzeichenfolge identifizieren. Das Standardtrennzeichen ist Leerzeichen, einschließlich Leerzeichen und nicht druckbare Zeichen, z. B. Zeilenumbruch ('n) und Tabstopp (nicht). Wenn die Zeichenfolgen geteilt werden, wird das Trennzeichen aus allen Teilzeichenfolgen weggelassen. Beispiel:

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

Standardmäßig wird das Trennzeichen aus den Ergebnissen weggelassen. Um das Gesamte oder einen Teil des Trennzeichens beizubehalten, schließen Sie den Teil, den Sie beibehalten möchten, in Klammern ein. Wenn der Parameter hinzugefügt wird, hat dies <Max-substrings> Vorrang, wenn der Befehl die Auflistung aufteilt. Wenn Sie ein Trennzeichen als Teil der Ausgabe einschließen möchten, gibt der Befehl das Trennzeichen als Teil der Ausgabe zurück. Das Teilen der Zeichenfolge, um das Trennzeichen als Teil der Ausgabe zurückzugeben, zählt jedoch nicht als Split.

Beispiele:

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

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

<Max-substrings>

Gibt die maximale Anzahl von Teilzeichenfolgen an, die von dem geteilten Vorgang zurückgegeben werden. Die Standardeinstellung ist alle Teilzeichenfolgen, die durch das Trennzeichen geteilt werden. Wenn weitere Teilzeichenfolgen vorhanden sind, werden sie mit der endgültigen Teilzeichenfolge verkettet. Wenn weniger Teilzeichenfolgen vorhanden sind, werden alle Teilzeichenfolgen zurückgegeben. Ein Wert von 0 gibt alle Teilzeichenfolgen zurück.

Beispiel:

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

Wenn Sie mehrere Zeichenfolgen (ein Array von Zeichenfolgen) an den -split Operator übermitteln, wird der Max-substrings Grenzwert separat auf jede Zeichenfolge angewendet.

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

a
b
c
1
2
3,4,5

<Max-substrings> gibt nicht die maximale Anzahl von Objekten an, die zurückgegeben werden. Im folgenden Beispiel <Max-substrings> ist "3" festgelegt. Dies führt zu drei Teilzeichenfolgenwerten, aber insgesamt fünf Zeichenfolgen in der resultierenden Ausgabe. Das Trennzeichen wird nach den Teilen eingeschlossen, bis die maximal drei Teilzeichenfolgen erreicht sind. Zusätzliche Trennzeichen in der endgültigen Teilzeichenfolge werden Teil der Teilzeichenfolge.

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

Negative Werte geben die Menge der angeforderten Teilzeichenfolgen ab dem Ende der Eingabezeichenfolge zurück.

Hinweis

Unterstützung für negative Werte wurde in PowerShell 7 hinzugefügt.

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

<ScriptBlock>

Ein Ausdruck, der Regeln zum Anwenden des Trennzeichens angibt. Der Ausdruck muss ausgewertet werden, um $true oder $false. Schließen Sie den Skriptblock in geschweifte Klammern ein.

Beispiel:

$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

<Optionen>

Schließen Sie den Optionsnamen in Anführungszeichen ein. Optionen sind nur gültig, wenn der <Parameter "Max-substrings> " in der Anweisung verwendet wird.

Die Syntax für den Parameter "Options" lautet:

"SimpleMatch [,IgnoreCase]"

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

Die SimpleMatch-Optionen sind:

  • SimpleMatch: Verwenden Sie beim Auswerten des Trennzeichens einen einfachen Zeichenfolgenvergleich. Mit RegexMatch kann nicht verwendet werden.
  • IgnoreCase: Erzwingt den Abgleich der Groß-/Kleinschreibung, auch wenn der Operator -cSplit angegeben ist.

Die RegexMatch-Optionen sind:

  • RegexMatch: Verwenden Sie den regulären Ausdrucksabgleich, um das Trennzeichen auszuwerten. Dies ist die Standardeinstellung. Kann mit SimpleMatch nicht verwendet werden.
  • IgnoreCase: Erzwingt den Abgleich der Groß-/Kleinschreibung, auch wenn der Operator -cSplit angegeben ist.
  • CultureInvariant: Ignoriert kulturelle Unterschiede in der Sprache beim Auswerten des Trennzeichens. Gilt nur für RegexMatch.
  • IgnorePatternWhitespace: Ignoriert nicht gescapete Leerzeichen und Kommentare, die mit dem Nummernzeichen (#) gekennzeichnet sind. Gilt nur für RegexMatch.
  • Multiline: Multiline-Modus erzwingt ^ und $ entspricht dem Anfangsende jeder Zeile anstelle des Anfangs und Endes der Eingabezeichenfolge.
  • Singleline: Der Singleline-Modus behandelt die Eingabezeichenfolge als SingleLine. Es erzwingt, dass das . Zeichen jedem Zeichen (einschließlich Neuerlinien) entspricht, anstatt jedes Zeichen außer der Neuen Zeile \nabzugleichen.
  • ExplicitCapture: Ignoriert nicht benannte Übereinstimmungsgruppen, sodass nur explizite Erfassungsgruppen in der Ergebnisliste zurückgegeben werden. Gilt nur für RegexMatch.

UNARY- und BINARY SPLIT-OPERATOREN

Der unäre Split-Operator (-split <string>) hat eine höhere Priorität als ein Komma. Wenn Sie daher eine durch Trennzeichen getrennte Liste von Zeichenfolgen an den unären Split-Operator übermitteln, wird nur die erste Zeichenfolge (vor dem ersten Komma) geteilt.

Verwenden Sie eines der folgenden Muster, um mehrere Zeichenfolgen aufzuteilen:

  • Verwenden des binären Split-Operators (<string[]> -split <delimiter>)
  • Schließen Sie alle Zeichenfolgen in Klammern ein.
  • Speichern Sie die Zeichenfolgen in einer Variablen, und übermitteln Sie dann die Variable an den Split-Operator.

Sehen Sie sich das folgende Beispiel an:

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

Beispiele

Die folgende Anweisung teilt die Zeichenfolge bei Leerzeichen auf.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Die folgende Anweisung teilt die Zeichenfolge in einem beliebigen Komma auf.

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

Die folgende Anweisung teilt die Zeichenfolge am Muster "er".

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

Mit der folgenden Anweisung wird beim Buchstaben "N" die Groß-/Kleinschreibung beachtet.

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

Die folgende Anweisung teilt die Zeichenfolge auf "e" und "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

Die folgende Anweisung teilt die Zeichenfolge auf "e" und "r", beschränkt jedoch die resultierenden Teilzeichenfolgen auf sechs Teilzeichenfolgen.

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

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

Die folgende Anweisung teilt eine Zeichenfolge in drei Teilzeichenfolgen auf.

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

Die folgende Anweisung teilt eine Zeichenfolge ab dem Ende der Zeichenfolge in drei Teilzeichenfolgen auf.

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

Die folgende Anweisung teilt zwei Zeichenfolgen in drei Teilzeichenfolgen auf. (Der Grenzwert wird unabhängig auf jede Zeichenfolge angewendet.)

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

Die folgende Anweisung teilt jede Zeile in der hier-Zeichenfolge an der ersten Ziffer auf. Sie verwendet die Option "Mehrzeilige", um den Anfang jeder Zeile und Zeichenfolge zu erkennen.

The 0 represents the "return all" value of the Max-substrings parameter. Sie können Optionen wie "Multiline" nur verwenden, wenn der Wert für Max-Teilzeichenfolgen angegeben wird.

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

Die folgende Anweisung verwendet das umgekehrte Schrägstrichzeichen, um das Punkttrennzeichen (.) zu escapeen.

Bei der Standardeinstellung "RegexMatch" wird der in Anführungszeichen (".") eingeschlossene Punkt so interpretiert, dass er mit einem beliebigen Zeichen mit Ausnahme eines Neuenlinezeichens übereinstimmt. Daher gibt die Split-Anweisung für jedes Zeichen mit Ausnahme der Neuen Zeile eine leere Zeile zurück.

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

Die folgende Anweisung verwendet die Option "SimpleMatch", um den Operator "-split" zu leiten, um das Punkttrennzeichen (.) buchstäblich zu interpretieren.

The 0 represents the "return all" value of the Max-substrings parameter. Sie können Optionen wie "SimpleMatch" nur verwenden, wenn der Wert für Max-Teilzeichenfolgen angegeben wird.

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

Die folgende Anweisung teilt die Zeichenfolge auf eines von zwei Trennzeichen, abhängig vom Wert einer Variablen.

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

Weitere Informationen