Freigeben über


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 der Teilzeichenfolgen ist, werden die verbleibenden 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 im Befehl nicht 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 -iSplit oder -cSplit in -split jeder binären Split-Anweisung ersetzen (eine Split-Anweisung, die ein Trennzeichen oder einen Skriptblock enthält). Bei den -iSplit Operatoren und -split wird die Groß-/Kleinschreibung nicht beachtet. Beim -cSplit Operator wird die Groß-/Kleinschreibung beachtet, d. h. die Groß-/Kleinschreibung wird berücksichtigt, wenn die Trennzeichenregeln angewendet werden.

Parameter

<String> oder <String[]>

Gibt eine oder mehrere zu teilende Zeichenfolgen an. Wenn Sie mehrere Zeichenfolgen übermitteln, werden alle Zeichenfolgen mit denselben Trennzeichenregeln aufgeteilt.

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 druckbarer Zeichen, z. B. Zeilenumbruch ('n) und Tabstoppzeichen ('t). Wenn die Zeichenfolgen geteilt werden, wird das Trennzeichen in allen Teilzeichenfolgen weggelassen. Beispiel:

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

Standardmäßig wird das Trennzeichen in den Ergebnissen weggelassen. Um das Trennzeichen ganz oder teilweise beizubehalten, schließen Sie den Teil, den Sie beibehalten möchten, in Klammern ein. Wenn der <Max-substrings> Parameter hinzugefügt wird, hat dies 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 Aufteilen der Zeichenfolge, um das Trennzeichen als Teil der Ausgabe zurückzugeben, zählt jedoch nicht als Aufteilung.

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 vom Teilungsvorgang zurückgegeben werden. Der Standardwert sind alle Teilzeichenfolgen, die durch das Trennzeichen geteilt werden. Wenn mehr Teilzeichenfolgen vorhanden sind, werden sie mit der endgültigen Teilzeichenfolge verkettet. Wenn weniger Teilzeichenfolgen vorhanden sind, werden alle Teilzeichenfolgen zurückgegeben. Der Wert 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 zurückgegebener Objekte an. Im folgenden Beispiel <Max-substrings> ist auf 3 festgelegt. Dies führt zu drei Teilzeichenfolgenwerten, aber insgesamt fünf Zeichenfolgen in der resultierenden Ausgabe. Das Trennzeichen wird nach der Aufteilung eingeschlossen, bis das Maximum von drei Teilzeichenfolgen erreicht ist. 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 als $true oder $false ausgewertet werden. 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 <Max-substrings-Parameter> in der -Anweisung verwendet wird.

Die Syntax für den Options-Parameter lautet:

"SimpleMatch [,IgnoreCase]"

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

Die SimpleMatch-Optionen sind:

  • SimpleMatch: Verwenden Sie einen einfachen Zeichenfolgenvergleich, wenn Sie das Trennzeichen auswerten. Kann nicht mit RegexMatch verwendet werden.
  • IgnoreCase: Erzwingt, dass die Groß-/Kleinschreibung nicht beachtet wird, auch wenn der Operator -cSplit angegeben ist.

Die RegexMatch-Optionen sind:

  • RegexMatch: Verwenden Sie die Übereinstimmung mit regulären Ausdrücken, um das Trennzeichen auszuwerten. Dies ist das Standardverhalten. Kann nicht mit SimpleMatch verwendet werden.
  • IgnoreCase: Erzwingt, dass die Groß-/Kleinschreibung nicht beachtet wird, auch wenn der Operator -cSplit angegeben ist.
  • CultureInvariant: Ignoriert kulturelle Unterschiede in der Sprache beim Auswerten des Trennzeichens. Nur mit RegexMatch gültig.
  • IgnorePatternWhitespace: Ignoriert leerzeichen und kommentare, die mit dem Nummernzeichen (#) gekennzeichnet sind. Nur mit RegexMatch gültig.
  • Mehrzeiliges: Der Mehrzeilige 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 mit jedem Zeichen (einschließlich Zeilenumbrüchen) übereinstimmt, anstatt jedes Zeichen MIT AUSNAHME des Zeilenumbruchs \nabzugleichen.
  • ExplicitCapture: Ignoriert nicht benannte Übereinstimmungsgruppen, sodass nur explizite Erfassungsgruppen in der Ergebnisliste zurückgegeben werden. Nur mit RegexMatch gültig.

UNÄRE UND BINÄRE SPLIT-OPERATOREN

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

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

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

Betrachten Sie das folgende Beispiel:

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 an 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 im Muster "er".

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

Die folgende Anweisung führt eine Aufteilung zwischen Groß- und Kleinschreibung am Buchstaben "N" durch.

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

Die folgende Anweisung teilt die Zeichenfolge bei "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 bei "e" und "r", beschränkt die resultierenden Teilzeichenfolgen jedoch 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 here-Zeichenfolge an der ersten Ziffer auf. Sie verwendet die Option Mehrzeilige, um den Anfang jeder Zeile und Zeichenfolge zu erkennen.

Der Wert 0 stellt den Wert "alle zurückgeben" des Parameters Max-substrings dar. Sie können Optionen, z. B. Mehrzeilen, nur verwenden, wenn der Wert Max-substrings angegeben ist.

$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 den umgekehrten Schrägstrich, um das Punkttrennzeichen (.) zu escapen.

Bei der Standardeinstellung RegexMatch wird der in Anführungszeichen (".") eingeschlossene Punkt so interpretiert, dass er einem beliebigen Zeichen mit Ausnahme eines Zeilenneulinienzeichens entspricht. Daher gibt die Split-Anweisung eine Leerzeile für jedes Zeichen mit Ausnahme von Zeilenzeile zurück.

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

Die folgende Anweisung verwendet die SimpleMatch-Option, um den Operator -split anweisen, das Punkttrennzeichen (.) wörtlich zu interpretieren.

Der Wert 0 stellt den Wert "alle zurückgeben" des Parameters Max-substrings dar. Sie können Optionen wie SimpleMatch nur verwenden, wenn der Wert Max-substrings angegeben ist.

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

Die folgende Anweisung teilt die Zeichenfolge in einem von zwei Trennzeichen auf, 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