PowerShell'de Dizedeki Karakter Oluşumlarını Sayma [4 Yol]
-replace Operatörünü Kullanma
PowerShell'de bir Dizedeki bir karakterin oluşumlarını saymak için:
- Belirtilen karakterin tekrarlarını boş bir dizeyle değiştirmek ve sonucu geçici bir dizede saklamak için
-replaceoperatörünü kullanın. - Orijinalin ve geçici dizenin uzunluğunu almak için
.Lengthözelliğini kullanın. - Karakter sayısını bulmak için geçici dizenin uzunluğunu orijinal dizeden çıkarın.
-replace Operatörünü kullanın:
$string = "my_string"
$character = 'm'
$temp_string = ($string -replace $character,"")
$count = $string.Length - $temp_string.Length
Write-Output "Occurence frequency of '$character' in '$string' is $count"ÇIKTI:
Occurence frequency of 'm' in 'my_string' is 1PowerShell'deki -replace operatörü, belirtilen bir veya daha fazla karakteri veya dizeyi başka bir dizeyle değiştirir. Orijinal dizeyi değiştirmeden yeni bir dize döndürür. İki argüman alır:
- Birincisi değiştirmek istediğimiz değerdir.
- İkincisi, ilkini değiştirmek istediğimiz değerdir.
Belirli karakterleri boş bir dizeyle değiştirmek için -replace operatörünü kullanarak bir dizeden belirli karakterleri de kaldırabiliriz. Örneğin, bu operatörü, karakterin oluşumlarını dize'de boş dizelerle değiştirerek kaldırmak için kullandık. Değiştirme işleminin sonucunu bir temp_string'de sakladık.
PowerShell'de, .NET Framework'teki System.String sınıfı bir Unicode karakter dizisini temsil eder. Dizelerle çalışmak için çeşitli yöntemler ve özellikler sağlar. Örneğin, Length özelliği bir dizedeki karakter sayısını döndürür.
.Length özelliği, belirli bir karakterin bir dizede kaç kez görüneceğini belirlemek için -replace operatörüyle birleşir. Örneğin, bu özelliği string ve temp_String'deki karakterlerin sayısını saymak için kullandık. temp_string, karakter dışında karakterler içeriyor. Bu nedenle, karakterin string'de görülme sıklığını bulmak için temp_string uzunluğunu string'den çıkardık.
.Split() Yöntemini Kullanma
PowerShell'de bir String'deki bir karakterin oluşum sıklığını almak için:
dize'yi sınırlayıcı olarakkarakter'i belirten bir alt dize dizisine bölmek için.Split()yöntemini kullanın.- Dizideki öğelerin sayısını almak için
.Countözelliğini kullanın; bu, orijinal dizedekarakterinoluşum sayısı olacaktır.
.Split() Yöntemini Kullanma:
$string = "my_string"
$character = 'm'
$count = ($string.Split($character)).count-1
Write-Output "Occurence frequency of '$character' in '$string' is $count"ÇIKTI:
Occurence frequency of 'm' in 'my_string' is 1System.String sınıfının .Split() yöntemi, verilen sınırlayıcıya göre bir dizeyi bir alt dize dizisine böler. Sınırlayıcı, alt dizeleri ayıran bir karakter veya karakter kümesidir. Ortaya çıkan dizi, orijinal dizede bulunan ancak sınırlayıcıyı içermeyen tüm alt dizeleri içerecektir. Örneğin, karakter'i ayırıcı olarak dikkate alarak bölmek için string'e .Split() yöntemini uyguladık.
Ancak .Count özelliği, System.Collections.ICollection arayüzünün bir özelliğidir ve bir koleksiyondaki öğelerin sayısını döndürür. Bu nedenle bir dizideki eleman sayısını alabilir. Örneğin, sonuç dizisindeki öğelerin sayısını almak için bu özelliği kullandık.
Döndürülen sayının, toplam oluşum sayısından
1daha az olduğunu unutmayın. Bunun nedeni, sayının, sınırlayıcıyı içermeyen orijinal dizeyi bölerek oluşturulan dizideki öğelerin sayısını döndürmesidir. Bu nedenle, tam oluşum sıklığını elde etmek için çıktıdan1'i çıkarıyoruz.
.ToCharArray() Yöntemini Kullanma
PowerShell'de bir String'deki bir karakterin oluşum sayısını almak için:
dize'yi bir karakter dizisine dönüştürmek için.ToCharArray()yöntemini kullanın.- Dizinin yalnızca
karakterineeşit olan öğelerini filtrelemek içinWhere-Objectcmdlet'ini kullanın. - Filtrelenen dizideki öğelerin sayısını saymak için
.Countözelliğini kullanın.
.ToCharArray() Yöntemini kullanın:
$string = "my_string"
$character = 'm'
$count = ($string.ToCharArray() | Where-Object {$_ -eq $character}).count
Write-Output "Occurrence frequency of '$character' in '$string' is $count"ÇIKTI:
Occurrence frequency of 'm' in 'my_string' is 1System.String sınıfının .ToCharArray() yöntemi, PowerShell'deki bir nesneyi tek boyutlu bir karakter dizisine dönüştürür. Ortaya çıkan dizi, orijinal dizedeki her karakter için bir öğe içerir. Bu yöntemi bir dizenin tek tek karakterleri üzerinde işlemler gerçekleştirmek veya dizeyi bir karakter dizisi olarak işlemek için kullanabiliriz. Örneğin, string'i bir karakter dizisine dönüştürmek için bu yöntemi kullandık.
Boru (|) operatörü, bir komutun veya cmdlet'in çıktısını başka bir komut veya cmdlet'e girdi olarak iletir. .ToCharArray() yönteminin çıktısını işlemek için pipe operatörünü kullandık.
Koşullu cmdlet Where-Object, PowerShell'deki nesnelerin koleksiyonunu filtreler. -eq operatörünü kullanarak öğenin belirtilen karakter'e eşit olduğu .ToCharArray() yönteminin çıktısını filtreledik.
.Split() metodunun kullanımına ilişkin kod kısmını anlatırken .Count özelliğini ele almıştık. Bu bölümde, filtrelenen dizideki öğelerin sayısını saymak için bu özelliği kullandık; bu, orijinal string'deki karakterin oluşum sayısı olacaktır.
[regex]::matches() Yöntemini Kullanma
PowerShell'de bir Dize'de bir karakterin görülme sıklığını hesaplamak için .Count parametresiyle [regex]::matches() yöntemini kullanın. güçlü>
Match() Yöntemini kullanın:
$string = "my_string"
$character = 'm'
$count = [regex]::matches($string, $character).count
Write-Output "Occurence frequency of '$character' in '$string' is $count"ÇIKTI:
Occurence frequency of 'm' in 'my_string' is 1PowerShell'de [regex]::matches(), belirli bir ifadedeki bir ifadenin tüm eşleşmelerini bulan System.Text.RegularExpressions.Regex sınıfının statik bir yöntemidir. giriş dizesi.
[regex]::matches() yöntemi iki bağımsız değişken alır:
- İlk argüman, eşleştirmek istediğimiz bir ifade modeli veya karakterdir.
- İkinci argüman, eşleşmeleri bulmak istediğimiz giriş dizesidir.
Örneğin, bu yöntemi string içindeki karakter oluşumlarını aramak için kullandık. Bu yöntemin çıktısında, oluşma sıklığını hesaplamak için .Count parametresini kullandık.
Bir
System.Text.RegularExpressions.Matchiçeren birSystem.Text.RegularExpressions.MatchCollectionnesnesi döndürdüğü için bu yöntemin daha önce tartıştığımız diğerlerinden daha az verimli olduğunu unutmayın. > Bulunan her eşleşme için nesne kullanılırken diğerleri dize işlemlerini kullanır.
Bunların hepsi PowerShell'de String'deki karakter oluşumlarının nasıl sayılacağıyla ilgilidir.
