PowerShell'de Bir Dize Nasıl Bölülür
PowerShell'de oldukça yaygın bir görev, bir dizeyi bir veya daha fazla alt dizeye bölmektir. Bir dizenin bölünmesi her zaman bir sınırlayıcıya göre yapılır. Bu, dizedeki boşluk, virgül veya belirli bir karakter gibi hemen hemen her şey olabilir.
PowerShell'de bir dizeyi bölmek için -split operatörünü veya Split yöntemini kullanacağız. Bu, belirli bir sınırlayıcıya, kaç alt dize döndürmek istediğinize ve diğer bazı seçeneklere bağlı olarak bir dizeyi bir alt dize dizisine bölmenize olanak tanır.
Bu yazıda Powershell'de bir dizenin basit bir şekilde nasıl bölüneceğine ve bazı gelişmiş seçeneklere bakacağız.
PowerShell Bölünmüş Dize
-split operatörü veya Split() yöntemi, bir dizeyi bir alt dize dizisine bölmenin yerleşik bir yoludur. Dizenin nereye bölünmesi gerektiğini belirlemek için bir sınırlayıcı (veya normal ifade modeli) sağlarsınız.
Örneğin, bir dizeyi her bir kelimeye bölmek için boşluğu sınırlayıcı olarak kullanabiliriz. Bu, dizedeki her bir kelimeyi döndürecektir:
$string = "The best PowerShell blog"
$string -split " "
# Result
The
best
PowerShell
blog
Yukarıdaki örnekte sonuçları doğrudan konsola aktardık, ancak normalde sonuçları betiğinizde kullanmak istersiniz. Sonuçları bir değişkende sakladığınızda, her bir alt dizeyi içeren bir dizi elde edersiniz.
Aşağıdaki örneği ele alırsak, dizeden yalnızca tarihi almak istiyorsak, boşluğu sınırlayıcı olarak kullanarak dizeyi bölebilir ve diziden yalnızca son öğeyi döndürebiliriz:
$string = "Delivery-contract-20230401"
$splitArray = $string.Split("-")
# Select the last item from the array
$splitArray[-1]
# Result
20230401Bilmeniz gereken şu ki, eğer bir sınırlayıcı belirtmezseniz o zaman alana da bölünecektir. Bölme operatörü varsayılan olarak büyük/küçük harfe duyarlı değildir; büyük/küçük harfe duyarlı olmanız gerekiyorsa -csplit operatörünü kullanın.
Bazı durumlarda bir dizeyi virgülle veya başka bir sınırlayıcıyla bölmek isteyebilirsiniz, ancak her alt dize bir boşlukla başlar. Her alt dizedeki boşlukları kaldırmak için en iyi şekilde Trim() yöntemini kullanabilirsiniz:
$string = "apple,banana,cherry,date"
$string.split(',')
# Result
apple
banana
cherry
date
# Remove space by including trim:
$string.split(',').trim()Birden Çok Sınırlayıcı Kullanma
Bazı durumlarda bir dizeyi farklı sınırlayıcılara göre bölmeniz gerekebilir. Bunu düzenli ifade kullanarak yapabiliriz. Bu, birden fazla sınırlayıcı belirtmemize olanak tanır. Aşağıdaki örnekte, dizeyi , ve | öğelerine böleceğiz.
$string = "apple,banana,cherry|date"
$string -split "[,|]"
# Result
apple
banana
cherry
dateBir dizeyi bölmek istediğiniz özel kalıpları tanımlamak için normal ifadeler kullanılabilir. Düzenli ifadelerin nasıl çalıştığına dair ayrıntılara girmeyeceğim ancak başlamanız için size birkaç örnek göstereceğim:
# Split on multiple spaces or tabs:
$string = "This is a string with multiple spaces and tabs"
$string -split "\s+"
# Split on decimals:
$string = "Hello123World456Test789"
$string -split "\d+"
# Split on sentences:
$string = "This is a sentence. And here is another one! Finally, a third sentence."
$splitArray = $string -split "(?<=[.!?])\s+"Sonuçları Sınırlayın
Varsayılan olarak split yöntemi tüm alt dizeleri döndürür, ancak ya yalnızca ilk parçaya ihtiyacınız varsa? Bunun için döndürülen alt dizi sayısını sınırlayacak Maxsubstrings parametresini kullanabiliriz.
Saymaya dizenin başından başlamak için pozitif bir sayı, dizenin sonundan itibaren saymaya başlamak için negatif bir sayı kullanabilirsiniz. Örneğin, yalnızca tarihi dosya adından ayırmak istiyoruz:
$string = "20230401-La-srv-dc01 Event Log.log"
$string -split "-", 2
# Result
20230401
La-srv-dc01 Event Log.logSonuçları sınırlamanın avantajı betiğinizi hızlandırabilmesidir. Tek bir dizeyle bunu fark etmeyeceksiniz. Ancak binlerce kayıt işliyorsanız yalnızca ihtiyacınız olanı almak, komut dosyanızın çalışma süresinden birkaç saniye tasarruf etmenizi sağlayabilir.
Kapanış
PowerShell'de dizeyi bölmek, spit yöntemi veya operatörüyle oldukça basittir. Bir dizenin yalnızca ilk n karakterine sahip olmak istiyorsanız PowerShell'de alt dize yöntemini kullanmalısınız.
Umarım bu makaleyi faydalı bulmuşsunuzdur, herhangi bir sorunuz varsa aşağıya yorum bırakmanız yeterli.
