6.02.2023

Powershell'de string'i sabit uzunluklu parçalara bölme

String verilerini farklı şekillerde dizi (array) veri tipine dönüştürmek mümkün. Örneğin her boşluk karakterini ayraç olarak kullanarak aşağıdaki $sehirler değişkeninden bir şehirler dizisi üretmek mümkün.

PS> $sehirler = "Bursa İstanbul Ankara İzmir"

PS> $sehirler -split " "
Bursa
İstanbul
Ankara
İzmir

herhangi bir ayraç karakterini kullanarak bölümleme yapılabilir. ConvertFrom-CSV ile virgülle ayrılmış değerlerden bir tablo yapmak, ya da ConvertFrom-String ile CSV'nin daha genel hali olarak herhangi bir ayraç ile ayrılmış string'den parçalar oluşturmak mümkün

PS> $sehirler | ConvertFrom-String

P1    P2       P3     P4
--    --       --     --
Bursa İstanbul Ankara İzmir

Ama sabit genişlikli bölümleme nasıl yapılır, uygun bir yöntem bulamamıştım. Şu adreste verilen yöntem amaca yönelik güzel bir yol ve üstelik -split operatörünün daha regexp kullanımına uygun olduğunu da hatırlatmak açısından faydalıydı:

PS> $sehirler -split '(.{3})' | ?{$_}

Bur
sa
İst
anb
ul
Ank
ara
İz
mir

En sondaki ?{$_} bölümü her 3 karakterlik satırdan sonra 1 boş satır ekleMEmesi için.

Bu örnek üzerinden çok anlamlı değil belki ama genel olarak sabit genişlikli string dizileri oluşturmak için kullanışlı.

Hiç yorum yok: