Aracılığıyla paylaş


about_Split

Kısa açıklama

Bir veya daha fazla dizeyi alt dizelere bölmek için Split işlecinin nasıl kullanılacağını açıklar.

Uzun açıklama

Split işleci bir veya daha fazla dizeyi alt dizelere böler. Bölme işleminin aşağıdaki öğelerini değiştirebilirsiniz:

  • Sınırlayıcı. Varsayılan olarak boşluk vardır, ancak sınırlayıcıyı belirten karakterleri, dizeleri, desenleri veya betik bloklarını belirtebilirsiniz. PowerShell'deki Split işleci, sınırlayıcıda basit bir karakter yerine normal bir ifade kullanır.
  • En fazla alt dize sayısı. Varsayılan değer tüm alt dizeleri döndürmektir. Alt dize sayısından küçük bir sayı belirtirseniz, kalan alt dizeler son alt dizede birleştirilir.
  • SimpleMatch ve Multiline gibi sınırlayıcının eşleştirildiği koşulları belirten seçenekler.

Sözdizimi

Aşağıdaki diyagramda -split işlecinin söz dizimi gösterilmektedir.

Parametre adları komutta görünmez. Yalnızca parametre değerlerini ekleyin. Değerler söz dizimi diyagramında belirtilen sırada görünmelidir.

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

herhangi bir ikili Split deyiminde (sınırlayıcı veya betik bloğu içeren bir Split deyimi) yerine veya -cSplit-split kullanabilirsiniz-iSplit. -iSplit ve -split işleçleri büyük/küçük harfe duyarlı değildir. işleci -cSplit büyük/küçük harfe duyarlıdır, yani sınırlayıcı kuralları uygulandığında büyük/küçük harf dikkate alınır.

Parametreler

<Dize> veya <Dize[]>

Bölünecek bir veya daha fazla dizeyi belirtir. Birden çok dize gönderirseniz, tüm dizeler aynı sınırlayıcı kuralları kullanılarak bölünür.

Örnek:

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

<Sınırlayıcı>

Alt dizenin sonunu tanımlayan karakterler. Varsayılan sınırlayıcı boşluklar ve yeni satır ('n) ve sekme ('t) gibi yazdırılamayan karakterler de dahil olmak üzere boşlukdur. Dizeler bölündüğünde, sınırlayıcı tüm alt dizelerden atlanır. Örnek:

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

Varsayılan olarak, sınırlayıcı sonuçlardan atlanır. Sınırlayıcının tamamını veya bir bölümünü korumak için, korumak istediğiniz bölümü parantez içine alın. <Max-substrings> parametresi eklenirse, komutunuz koleksiyonu böldüğünde bu öncelik kazanır. Çıkışın parçası olarak bir sınırlayıcı eklemeyi tercih ederseniz, komut sınırlayıcıyı çıkışın bir parçası olarak döndürür; ancak, dizeyi çıkış kapsamında sınırlayıcıyı döndürecek şekilde bölmek bölme olarak sayılmaz.

Örnekler:

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

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

<Max-substrings>

Bölme işlemi tarafından döndürülen en fazla alt dize sayısını belirtir. Varsayılan değer, sınırlayıcıya göre bölünmüş tüm alt dizelerdir. Daha fazla alt dize varsa, bunlar son alt dizeyle birleştirilir. Daha az alt dize varsa, tüm alt dizeler döndürülür. 0 değeri tüm alt dizeleri döndürür.

Örnek:

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

İşlece birden fazla dize (dize dizisi) -split gönderirseniz, Max-substrings sınır her dizeye ayrı olarak uygulanır.

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

a
b
c
1
2
3,4,5

<Max-substrings> döndürülen en fazla nesne sayısını belirtmez. Aşağıdaki örnekte <Max-substrings> 3 olarak ayarlanmıştır. Bu, üç alt dize değeriyle sonuçlanır, ancak sonuçta elde edilen çıktıda toplam beş dize olur. Sınırlayıcı, en fazla üç alt dizeye ulaşılana kadar bölmelerden sonra eklenir. Son alt dizedeki ek sınırlayıcılar alt dizenin bir parçası olur.

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

Negatif değerler, giriş dizesinin sonundan başlayarak istenen alt dize miktarını döndürür.

Not

PowerShell 7'de negatif değerler desteği eklendi.

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

<ScriptBlock>

Sınırlayıcıyı uygulamak için kuralları belirten ifade. İfadenin $true veya $false olarak değerlendirmesi gerekir. Betik bloğunu ayraç içine alın.

Örnek:

$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

<Seçenekler>

Seçenek adını tırnak içine alın. Seçenekler yalnızca deyiminde <Max-substrings> parametresi kullanıldığında geçerlidir.

Options parametresinin söz dizimi şöyledir:

"SimpleMatch [,IgnoreCase]"

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

SimpleMatch seçenekleri şunlardır:

  • SimpleMatch: Sınırlayıcıyı değerlendirirken basit dize karşılaştırması kullanın. RegexMatch ile kullanılamaz.
  • IgnoreCase: -cSplit işleci belirtilmiş olsa bile büyük/küçük harfe duyarsız eşleştirmeyi zorlar.

RegexMatch seçenekleri şunlardır:

  • RegexMatch: Sınırlayıcıyı değerlendirmek için normal ifade eşleştirmeyi kullanın. Bu varsayılan davranıştır. SimpleMatch ile kullanılamaz.
  • IgnoreCase: -cSplit işleci belirtilmiş olsa bile büyük/küçük harfe duyarsız eşleştirmeyi zorlar.
  • CultureInvariant: Sınırlayıcıyı değerlendirirken dildeki kültürel farklılıkları yoksayar. Yalnızca RegexMatch ile geçerlidir.
  • IgnorePatternWhitespace: Boş boş alanı ve sayı işareti (#) ile işaretlenmiş açıklamaları yoksayar. Yalnızca RegexMatch ile geçerlidir.
  • Çok satırlı: Çok satırlı mod, $ giriş dizesinin başlangıcı ve sonu yerine her satırın başlangıcını eşleştirmeye zorlar^.
  • Tek satırlı: Tek satır modu, giriş dizesini Tek Satır olarak değerlendirir. Karakteri, yeni satır HARIÇ her karakteri eşleştirmek yerine her karakterle (yeni satırlar \ndahil) eşleşmeye zorlar..
  • ExplicitCapture: Sonuç listesinde yalnızca açık yakalama gruplarının döndürülmesi için adlandırılmış olmayan eşleşme gruplarını yoksayar. Yalnızca RegexMatch ile geçerlidir.

BIRLI ve İKILI BÖLME İŞLEÇLERI

Birli bölme işleci (-split <string>), virgülden daha yüksek önceliğe sahiptir. Sonuç olarak, birli bölme işlecine virgülle ayrılmış bir dize listesi gönderirseniz, yalnızca ilk dize (ilk virgülden önce) bölünür.

Birden fazla dizeyi bölmek için aşağıdaki desenlerden birini kullanın:

  • İkili bölme işlecini (<string[]> -split <sınırlayıcısı>) kullanma
  • Tüm dizeleri parantez içine alın
  • Dizeleri bir değişkende depolayın ve ardından değişkeni split işlecine gönderin

Aşağıdaki örneği inceleyin:

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

Örnekler

Aşağıdaki deyim dizeyi boşlukta böler.

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

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

Aşağıdaki deyim dizeyi herhangi bir virgüle böler.

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

Aşağıdaki deyim dizeyi "er" deseninde böler.

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

Aşağıdaki deyim , "N" harfinde büyük/küçük harfe duyarlı bir bölme gerçekleştirir.

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

Aşağıdaki deyim dizeyi "e" ve "t" olarak böler.

"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

Aşağıdaki deyim dizeyi "e" ve "r" olarak böler, ancak sonuçta elde edilen alt dizeleri altı alt dizeyle sınırlar.

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

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

Aşağıdaki deyim bir dizeyi üç alt dizeye böler.

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

Aşağıdaki deyim, dizenin sonundan başlayarak bir dizeyi üç alt dizeye böler.

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

Aşağıdaki deyim iki dizeyi üç alt dizeye böler. (Sınır her dizeye bağımsız olarak uygulanır.)

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

Aşağıdaki deyim, here-string içindeki her satırı ilk basamakta böler. Her satırın ve dizenin başlangıcını tanımak için Çok Satırlı seçeneğini kullanır.

0, Max-substrings parametresinin "tümünü döndür" değerini temsil eder. Çok Satırlı gibi seçenekleri yalnızca Max-substrings değeri belirtildiğinde kullanabilirsiniz.

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

Aşağıdaki deyim, nokta (.) sınırlayıcıdan kaçmak için ters eğik çizgi karakterini kullanır.

Varsayılan değer olan RegexMatch ile tırnak işareti (".") içine alınmış nokta, yeni satır karakteri dışında herhangi bir karakterle eşleşecek şekilde yorumlanır. Sonuç olarak Split deyimi, yeni satır dışındaki her karakter için boş bir satır döndürür.

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

Aşağıdaki deyim, -split işlecini nokta (.) sınırlayıcısını tam anlamıyla yorumlamaya yönlendirmek için SimpleMatch seçeneğini kullanır.

0, Max-substrings parametresinin "tümünü döndür" değerini temsil eder. SimpleMatch gibi seçenekleri yalnızca Max-substrings değeri belirtildiğinde kullanabilirsiniz.

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

Aşağıdaki deyim, bir değişkenin değerine bağlı olarak dizeyi iki sınırlayıcıdan birine böler.

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

Ayrıca bkz.