PowerShell Dizeyi Birden Çok Sınırlayıcıya Göre Bölme [4 Yol]


-split Operatörünü Normal İfadeyle Kullanma

PowerShell'de dizeyi birden çok sınırlayıcıya göre bölmek için normal ifadeyle -split operatörünü kullanın.

Normal İfadeyle -split Operatörünü kullanın:

$string = "one,two;three four"
$delimiters = "[,; ]+"
$parts = $string -split $delimiters
$parts

Çıkış:

one
two
three
four

Öncelikle $string isimli bir string değişkeni ve $delimiters isimli bir dizi değişkeni tanımlanır. Daha sonra, $string'e "one,two;third four" ile atanırken, $delimiters "[ ile ayarlanır, ; ]+".

Bundan sonra, $string adlı dize değişkeninde -split operatörü kullanılır ve $delimiters değişkeni argüman olarak iletilir. Ortaya çıkan çıktı, belirtilen sınırlayıcılara göre bölünmüş dizenin ayrı bölümlerini içeren bir dizidir.

Girişleri kaldırmak istemeniz durumunda, Where-object cmdlet'ini kullanabilirsiniz.

Where-Object Cmdlet'iyle -split Operatörünü kullanın:

$string = "one,two;three four"
$delimiters = "[,; ]+"
$parts = $string -split $delimiters | Where-Object { $_ -ne "" }
$parts

Çıkış:

one
two
three
four

Yukarıdaki örnekte, verilen dizinin boş öğeler (boş alt dizeler) hariç tüm alt dizelerini seçmek için Where-Object cmdlet'ini kullandık. Boş öğeler nasıl hariç tutulur? Bunun için, mevcut öğenin ($_) (-ne) değerine eşit olup olmadığını belirlemek için {$_ -ne "" şeklinde bir koşul kullandık. ) boş bir dize (""). Son olarak, ortaya çıkan dizi $parts değişkeninde saklandı.

Regex.Split() Yöntemini Kullanma

PowerShell'de dizeyi birden çok sınırlayıcıya göre bölmek için Regex.Split() yöntemini kullanın.

Regex.Split() Yöntemini kullanın:

$string = "one,two;three four"
$delimiters = "[,; ]+"
$parts = [Regex]::Split($string, $delimiters)
$parts

Çıkış:

one
two
three
four

İlk olarak, $string PowerShell değişkenine bir dize (yani "bir, iki; üç dört") ve "[,; ]+" sınırlayıcıları atanır. /$delimiters değişkenine atanır.

Bundan sonra bu çözümde dizeyi bölmek için Regex.Split() yöntemi kullanılır. Son olarak $string ve $delimiters değişkenleri Split() yöntemine parametre olarak verilir. Ortaya çıkan çıktı aynı zamanda dizenin ayrı ayrı bölümlerini içeren bir dizidir.

String.Split() Yöntemini Kullanma

PowerShell'de dizeyi birden çok sınırlayıcıya göre bölmek için String.Split() yöntemini kullanın.

String.Split() Yöntemini kullanın:

$string = "one,two;three four"
$delimiters = @(",", ";", " ")
$parts = $string.Split($delimiters, [System.StringSplitOptions]::RemoveEmptyEntries)
$parts

Çıkış:

one
two
three
four

Kod, $string adlı bir dize değişkenini ve $delimiters adlı bir dizi değişkenini tanımlar. Dize, virgül, noktalı virgül ve boşluklarla ayrılmış bir dizi sözcük içerir; örneğin, "bir, iki; üç dört". Dizi, dizeyi bölmek için kullanılması gereken sınırlayıcıları içerir; örneğin,@(",", ";", " "). Daha sonra $string dize değişkeninde Split() yöntemi çağrılır ve sınırlayıcı parametre olarak $delimiters dizisini geçirir.

RemoveEmptyEntries seçeneği, dizenin başındaki veya sonundaki ardışık sınırlayıcılardan veya sınırlayıcılardan kaynaklanan tüm boş girişleri kaldırır. Ortaya çıkan dizi $parts değişkeninde saklanır ve ardından görüntülenir.

System.Text.RegularExpressions.Regex Sınıfını Kullanma

PowerShell'de dizeleri birden çok sınırlayıcıya göre bölmek için System.Text.RegularExpressions.Regex sınıfını kullanın.

System.Text.RegularExpressions.Regex Sınıfını kullanın:

$string = "one,two;three four"
$delimiters = "[,; ]+"/
$regex = [System.Text.RegularExpressions.Regex]::new($delimiters)
$parts = $regex.Split($string)
$parts

Çıkış:

one
two
three
four

İlk olarak, PowerShell değişkeni $string'e dize içeren bir atanır, yani "bir, iki; üç dört". Bundan sonra "[,; ]+"/ sınırlayıcıları $delimiters değişkenine atanır. Daha sonra Regex sınıfının bir örneği oluşturulur. $delimiters değişkeni, System.Text.RegularExpressions.Regex sınıfının new() işlevine argüman olarak iletilir.

Daha sonra Regex örneği, dizeyi bölmek için Split() yöntemiyle birlikte kullanılır. Ortaya çıkan çıktı aynı zamanda dizenin ayrı ayrı bölümlerini içeren bir dizidir. Yukarıda tartışılan tüm yöntemlerin aynı sonucu ürettiğini unutmayın. İhtiyaçlarınıza ve tercihlerinize göre yöntemlerden herhangi birini seçebilirsiniz.

Bunların hepsi powershell dizesinin birden fazla sınırlayıcıya göre bölünmesiyle ilgili.

İlgili makaleler