Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 karakterler, dizeler, desenler veya betik blokları 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 Split deyimi) yerine veya -csplit-split kullanabilirsiniz-isplit.
-isplit ve -split işleçleri büyük/küçük harfe duyarlı değildir.
-csplit işleci 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 <Dizesi[]>
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
-split işlecine birden fazla dize (dize dizisi) 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ğunun küme ayraçlarını 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çenekleri>
Seçenek adını tırnak içine alın. Seçenekler yalnızca <Max-substrings> parametresi deyiminde 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: Karma karakteri (
#) ile işaretlenmiş boş alanı ve açıklamaları yoksayar. Yalnızca RegexMatch ile geçerlidir. -
Çok Satırlı: Çok satırlı mod,
^ve$giriş dizesinin başı ve sonu yerine her satırın başlangıcıyla eşleşmeye zorlar. -
Tek Satırlı: Tek satır modu, giriş dizesini SingleLineolarak değerlendirir. yeni satır
.HARIÇ her karakteri eşleştirmek yerine\nkarakteri her karakterle (yeni satırlar dahil) eşleştirmeye 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 ikili bölme iş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 kullanın (<dize[]> -split <sınırlayıcı>)
- 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 göz önünde bulundurun:
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 bakınız
- Bölünmüş Yol
- about_Operators
- about_Comparison_Operators
- about_Join
PowerShell