Bölünmüş hakkında
Kısa açıklama
Bir veya daha fazla dizeyi alt dizelere bölmek için Bölme operatörünün nasıl kullanılacağını açıklar.
Uzun açıklama
Bölme operatörü 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 boşluktur ancak sınırlayıcıyı belirten karakterleri, dizeleri, desenleri veya komut dosyası bloklarını belirtebilirsiniz. PowerShell'deki Bölme işleci sınırlayıcıda basit bir karakter yerine normal bir ifade kullanır.
- Maksimum alt dize sayısı. Varsayılan, tüm alt dizeleri döndürmektir. Alt dize sayısından daha az bir sayı belirtirseniz, kalan alt dizeler son alt dizede birleştirilir.
- SimpleMatch ve Multiline gibi sınırlayıcının eşleştiği koşulları belirten seçenekler.
Sözdizimi
Aşağıdaki şemada -split operatörünün sözdizimi gösterilmektedir.
Parametre adları komutta görünmez. Yalnızca parametre değerlerini ekleyin. Değerler sözdizimi 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 Bölme ifadesinde (sınırlayıcı veya kod bloğu içeren bir Bölme ifadesi) -split yerine -iSplit veya -cSplit'i kullanabilirsiniz. -iSplit ve -split operatörleri büyük/küçük harfe duyarlı değildir. -cSplit operatörü 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
veya
Bölünecek bir veya daha fazla dizeyi belirtir. Birden fazla 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
Bir 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 karakterleri içeren boşluktur. Dizeler bölündüğünde sınırlayıcı tüm alt dizelerden çıkarılır. Örnek:
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
Varsayılan olarak sınırlayıcı sonuçlardan çıkarılır. Sınırlayıcının tamamını veya bir kısmını korumak için, korumak istediğiniz kısmı parantez içine alın. <Max-substrings> parametresi eklenirse, komutunuz koleksiyonu böldüğünde bu öncelikli olur. Çıktının bir 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, sınırlayıcıyı çıktının bir parçası olarak döndürmek için dizeyi 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 alt dizelerin maksimum sayısını belirtir. Varsayılan, sınırlayıcı tarafından bölünen tüm alt dizelerdir. Daha fazla alt dize varsa bunlar son alt dizeye 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
-split operatörüne birden fazla dize (bir dize dizisi) gönderirseniz, Maksimum alt dize sınırı her dizeye ayrı ayrı 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 nesnelerin maksimum sayısını belirtmez. Aşağıdaki örnekte, <Max-substrings> 3'e ayarlanmıştır. Bu, üç alt dize değeriyle sonuçlanır, ancak elde edilen çıktıda toplam beş dize olur. Sınırlayıcı, maksimum üç alt dizeye ulaşılana kadar bölmelerden sonra dahil edilir. Son alt dizedeki ek sınırlayıcılar alt dizenin parçası haline gelir.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry
Negatif değerler, giriş dizesinin sonundan başlayarak istenen alt dizelerin miktarını döndürür.
Not
PowerShell 7'ye negatif değerler için destek eklendi.
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune
Sınırlayıcının uygulanmasına ilişkin kuralları belirten bir ifade. İfadenin $true veya $false olarak değerlendirilmesi gerekir. Betik bloğunu parantez 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çenek adını tırnak işaretleri içine alın. Seçenekler yalnızca ifadede
Seçenekler parametresinin sözdizimi şö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ını kullanın. RegexMatch ile kullanılamaz.
- IgnoreCase: -cSplit operatörü belirtilmiş olsa bile, büyük/küçük harfe duyarlı olmayan eşleşmeyi zorlar.
RegexMatch seçenekleri şunlardır:
- RegexMatch: Sınırlayıcıyı değerlendirmek için normal ifade eşleşmesini kullanın. Bu varsayılan davranıştır. SimpleMatch ile kullanılamaz.
- IgnoreCase: -cSplit operatörü belirtilmiş olsa bile, büyük/küçük harfe duyarlı olmayan eşleşmeyi zorlar.
- CultureInvariant: Sınırlayıcıyı değerlendirirken dildeki kültürel farklılıkları göz ardı eder. Yalnızca RegexMatch ile geçerlidir.
- IgnorePatternWhitespace: Çıkış yapılmamış boşlukları ve sayı işaretiyle (#) işaretlenen yorumları yok sayar. Yalnızca RegexMatch ile geçerlidir.
- Çok satırlı: Çok satırlı mod,
^ve$öğelerinin giriş dizesinin başı ve sonu yerine her satırın başlangıç sonuyla eşleşmesini zorlar. - Tek Satır: Tek satır modu, giriş dizesini Tek Satır olarak ele alır.
.karakterini,\nyeni satırı HARİÇ her karakterle eşleştirmek yerine, her karakterle (yeni satırlar dahil) eşleşmeye zorlar. - ExplicitCapture: Adlandırılmamış eşleşme gruplarını yok sayar, böylece sonuç listesinde yalnızca açık yakalama grupları döndürülür. Yalnızca RegexMatch ile geçerlidir.
BİRLİ ve İKİLİ BÖLME OPERATÖRLERİ
Tekli bölme operatörü (-split
Birden fazla dizeyi bölmek için aşağıdaki kalıplardan birini kullanın:
- İkili bölme operatörünü kullanın (
-split ) - Tüm dizeleri parantez içine alın
- Dizeleri bir değişkende saklayın ve ardından değişkeni split operatörüne gönderin
Aşağıdaki örneği düşünün:
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 ifade dizeyi boşluktan böler.
-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
Aşağıdaki ifade dizeyi herhangi bir virgülden böler.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Aşağıdaki ifade dizeyi "er" kalıbına göre böler.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
Aşağıdaki ifade "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 ifade dizeyi "e" ve "t" noktalarından 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 ifade, dizeyi "e" ve "r"de böler, ancak ortaya çıkan 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 ifade 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 ifade, bir dizeyi, dizenin sonundan başlayarak üç 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 ifade 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 ifade, here-string'deki 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. Multiline 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 ifadede nokta (.) sınırlayıcısından kaçmak için ters eğik çizgi karakteri kullanılır.
Varsayılan RegexMatch ile, tırnak işaretleri (".") içine alınan nokta, yeni satır karakteri dışında herhangi bir karakterle eşleşecek şekilde yorumlanır. Sonuç olarak, Split ifadesi 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 ifade, -split operatörünü 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 ifade, bir değişkenin değerine bağlı olarak dizeyi iki sınırlayıcıdan birinde 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 bakınız
- Split-Path
- about_Operators
- about_Comparison_Operators
- about_Join