about_Split

Deskripsi singkat

Menjelaskan cara menggunakan operator Pisahkan untuk membagi satu atau beberapa string menjadi substring.

Deskripsi panjang

Operator Pisahkan membagi satu atau beberapa string menjadi substring. Anda dapat mengubah elemen berikut dari operasi Pisahkan:

  • Pembatas. Defaultnya adalah spasi kosong, tetapi Anda dapat menentukan karakter, string, pola, atau blok skrip yang menentukan pembatas. Operator Pisahkan di PowerShell menggunakan ekspresi reguler di pemisah, bukan karakter sederhana.
  • Jumlah maksimum substring. Defaultnya adalah mengembalikan semua substring. Jika Anda menentukan angka yang kurang dari jumlah substring, substring yang tersisa digabungkan di substring terakhir.
  • Opsi yang menentukan kondisi di mana pemisah dicocokkan, seperti SimpleMatch dan Multiline.

Sintaks

Diagram berikut menunjukkan sintaks untuk operator -split.

Nama parameter tidak muncul dalam perintah. Sertakan hanya nilai parameter. Nilai harus muncul dalam urutan yang ditentukan dalam diagram sintaks.

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

Anda dapat mengganti -iSplit atau -cSplit untuk -split dalam pernyataan Pemisahan biner apa pun (pernyataan Split yang menyertakan pembatas atau blok skrip). Operator -iSplit dan -split tidak peka huruf besar/kecil. Operator -cSplit peka huruf besar/kecil, yang berarti bahwa kasus dipertimbangkan ketika aturan pemisah diterapkan.

Parameter

<String> atau <String[]>

Menentukan satu atau beberapa string yang akan dipisahkan. Jika Anda mengirimkan beberapa string, semua string dipisahkan menggunakan aturan pemisah yang sama.

Contoh:

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

<Pembatas>

Karakter yang mengidentifikasi akhir substring. Pemisah default adalah spasi kosong, termasuk spasi dan karakter yang tidak dapat dicetak, seperti baris baru ('n) dan tab (tidak). Ketika string dibagi, pemisah dihilangkan dari semua substring. Contoh:

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

Secara default, pemisah dihilangkan dari hasil. Untuk mempertahankan semua atau sebagian pemisah, sertakan dalam tanda kurung bagian yang ingin Anda pertahankan. <Max-substrings> Jika parameter ditambahkan, ini lebih diutamakan ketika perintah Anda memisahkan koleksi. Jika Anda memilih untuk menyertakan pemisah sebagai bagian dari output, perintah mengembalikan pemisah sebagai bagian dari output; namun, memisahkan string untuk mengembalikan pemisah sebagai bagian dari output tidak dihitung sebagai pemisahan.

Contoh:

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

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

<Max-substrings>

Menentukan jumlah maksimum substring yang dikembalikan oleh operasi pemisahan. Defaultnya adalah semua substring yang dibagi oleh pemisah. Jika ada lebih banyak substring, mereka digabungkan ke substring akhir. Jika ada lebih sedikit substring, semua substring dikembalikan. Nilai 0 mengembalikan semua substring.

Contoh:

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

Jika Anda mengirimkan lebih dari satu string (array string) ke -split operator, Max-substrings batas diterapkan ke setiap string secara terpisah.

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

a
b
c
1
2
3,4,5

<Max-substrings> tidak menentukan jumlah maksimum objek yang dikembalikan. Dalam contoh berikut, <Max-substrings> diatur ke 3. Ini menghasilkan tiga nilai substring, tetapi total lima string dalam output yang dihasilkan. Pemisah disertakan setelah pemisahan hingga maksimum tiga substring tercapai. Pemisah tambahan dalam substring akhir menjadi bagian dari substring.

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

Nilai negatif mengembalikan jumlah substring yang diminta mulai dari akhir string input.

Catatan

Dukungan untuk nilai negatif ditambahkan di PowerShell 7.

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

<ScriptBlock>

Ekspresi yang menentukan aturan untuk menerapkan pemisah. Ekspresi harus mengevaluasi ke $true atau $false. Sertakan blok skrip dalam kurung kurawal.

Contoh:

$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

<Opsi>

Sertakan nama opsi dalam tanda kutip. Opsi hanya valid ketika <parameter Max-substrings> digunakan dalam pernyataan.

Sintaks untuk parameter Opsi adalah:

"SimpleMatch [,IgnoreCase]"

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

Opsi SimpleMatch adalah:

  • SimpleMatch: Gunakan perbandingan string sederhana saat mengevaluasi pemisah. Tidak dapat digunakan dengan RegexMatch.
  • IgnoreCase: Memaksa pencocokan tidak peka huruf besar/kecil, meskipun operator -cSplit ditentukan.

Opsi RegexMatch adalah:

  • RegexMatch: Gunakan pencocokan ekspresi reguler untuk mengevaluasi pemisah. Ini adalah perilaku default. Tidak dapat digunakan dengan SimpleMatch.
  • IgnoreCase: Memaksa pencocokan tidak peka huruf besar/kecil, meskipun operator -cSplit ditentukan.
  • CultureInvariant: Mengabaikan perbedaan budaya dalam bahasa saat mengevaluasi pemisah. Hanya berlaku dengan RegexMatch.
  • IgnorePatternWhitespace: Mengabaikan spasi kosong dan komentar yang tidak dilepas yang ditandai dengan tanda angka (#). Hanya berlaku dengan RegexMatch.
  • Multibaris: Mode multibaris memaksa ^ dan $ mencocokkan akhir awal setiap baris alih-alih awal dan akhir string input.
  • Singleline: Mode singleline memperlakukan string input sebagai SingleLine. Ini memaksa karakter untuk mencocokkan . setiap karakter (termasuk baris baru), alih-alih mencocokkan setiap karakter KECUALI baris \nbaru .
  • ExplicitCapture: Mengabaikan grup pencocokan non-nama sehingga hanya grup pengambilan eksplisit yang dikembalikan dalam daftar hasil. Hanya berlaku dengan RegexMatch.

OPERATOR PEMISAHAN UNARY dan BINER

Operator pemisahan unary (-split <string>) memiliki prioritas yang lebih tinggi daripada koma. Akibatnya, jika Anda mengirimkan daftar string yang dipisahkan koma ke operator pemisahan unary, hanya string pertama (sebelum koma pertama) yang dipisahkan.

Gunakan salah satu pola berikut untuk membagi lebih dari satu string:

  • Gunakan operator pemisah biner (<string[]> -pemisah> terpisah<)
  • Sertakan semua string dalam tanda kurung
  • Simpan string dalam variabel lalu kirimkan variabel ke operator pemisah

Pertimbangkan contoh berikut:

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

Contoh

Pernyataan berikut membagi string di spasi kosong.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Pernyataan berikut membagi string pada koma apa pun.

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

Pernyataan berikut membagi string pada pola "er".

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

Pernyataan berikut melakukan pemisahan peka huruf besar/kecil pada huruf "N".

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

Pernyataan berikut membagi string di "e" dan "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

Pernyataan berikut membagi string di "e" dan "r", tetapi membatasi substring yang dihasilkan menjadi enam substring.

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

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

Pernyataan berikut membagi string menjadi tiga substring.

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

Pernyataan berikut membagi string menjadi tiga substring mulai dari akhir string.

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

Pernyataan berikut membagi dua string menjadi tiga substring. (Batas diterapkan ke setiap string secara independen.)

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

Pernyataan berikut membagi setiap baris dalam string di sini pada digit pertama. Ini menggunakan opsi Multibaris untuk mengenali awal setiap baris dan string.

0 mewakili nilai "kembalikan semua" dari parameter Max-substrings. Anda dapat menggunakan opsi, seperti Multibaris, hanya saat nilai Max-substrings ditentukan.

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

Pernyataan berikut menggunakan karakter garis miring terbelakang untuk menghindari pemisah titik (.).

Dengan default, RegexMatch, titik yang diapit dalam tanda kutip (".") ditafsirkan untuk mencocokkan karakter apa pun kecuali untuk karakter baris baru. Akibatnya, pernyataan Pisahkan mengembalikan baris kosong untuk setiap karakter kecuali baris baru.

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

Pernyataan berikut menggunakan opsi SimpleMatch untuk mengarahkan operator -split untuk menginterpretasikan pemisah titik (.) secara harfiah.

0 mewakili nilai "kembalikan semua" dari parameter Max-substrings. Anda dapat menggunakan opsi, seperti SimpleMatch, hanya ketika nilai Max-substrings ditentukan.

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

Pernyataan berikut membagi string di salah satu dari dua pemisah, tergantung pada nilai variabel.

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

Lihat juga