PowerShell'de Bir Dizenin Alt Dize İçerip İçmediği Nasıl Kontrol Edilir
Son zamanlarda müşterilerimden birinden, bir dizenin bir alt dize içerip içermediğini kontrol etme gereksinimi duydum. PowerShell'de çeşitli yöntemler denedim. Bu eğitimde, örneklerle çeşitli yöntemler kullanarak PowerShell'de bir dizenin alt dize içerip içermediğini kontrol etmenin nasıl yapılacağını açıklayacağım.
PowerShell'de bir dizenin alt dize içerip içermediğini kontrol etmek için joker karakterlerle (*substring*) -like operatörünü kullanabilirsiniz. Büyük/küçük harfe duyarlı denetimler için Contains() yöntemini ($string.Contains($substring)) de kullanabilirsiniz. Son olarak Select-String cmdlet'i veya IndexOf yöntemini ($string.IndexOf($substring) -ne -1) kullanarak da bunu başarabilirsiniz.
Yöntem 1: -like Operatörünü Kullanma
PowerShell'de, bir dizenin alt dize içerip içermediğini kontrol etmek için -like operatörünü kullanabiliriz. Desenleri eşleştirmek için joker karakterler kullanır.
İşte tam bir PowerShell betiği.
$string = "Hello, PowerShell World!"
$substring = "PowerShell"
if ($string -like "*$substring*") {
Write-Output "The string contains the substring."
} else {
Write-Output "The string does not contain the substring."
}Bu örnekte, * joker karakteri herhangi bir karakter dizisini temsil eder, dolayısıyla *PowerShell* "PowerShell"i içeren herhangi bir dizeyle eşleşir.
Yukarıdaki betiği çalıştırdım ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
PowerShell'de Büyük/Küçük Harfe Duyarsız Dize Karşılaştırmasını Okuyun
Yöntem 2: -match Operatörünü Kullanma
Powershell'de bir dizenin bir alt dize içerip içermediğini kontrol etmenin başka bir yöntemi. Kalıp eşleştirmeyi gerçekleştirmek için normal ifadelerle -match operatörünü kullanabilirsiniz. İşte başka bir örnek.
$string = "Hello, PowerShell World!"
$pattern = "PowerShell"
if ($string -match $pattern) {
Write-Output "The string contains the substring."
} else {
Write-Output "The string does not contain the substring."
}Burada, -match operatörü, $string'in, $pattern'de depolanan normal ifade modeliyle eşleşip eşleşmediğini kontrol eder.
Betiği VS kodunu kullanarak çalıştırdıktan sonra çıktı için aşağıdaki ekran görüntüsünü kontrol edebilirsiniz.
Yöntem 3: İçerir Yöntemini Kullanma
Contains() yöntemi, PowerShell'deki bir dize içinde bir alt dizenin mevcut olup olmadığını kontrol etmenin başka bir yoludur. Bu yöntem büyük/küçük harfe duyarlıdır.
İşte PowerShell betiğinin tamamı.
$string = "Hello, PowerShell World!"
$substring = "PowerShell"
if ($string.Contains($substring)) {
Write-Output "The string contains the substring."
} else {
Write-Output "The string does not contain the substring."
}Bu örnekte, İçerir yöntemi, $string içinde $substring bulunursa True döndürür, aksi halde şunu döndürür Yanlış.
PowerShell'de Dizeleri Karşılaştırma'yı okuyun
Yöntem 4: Select-String Cmdlet'ini Kullanma
Select-String cmdlet'i Unix grep komutuna benzer ve dizeler ve dosyalardaki metin kalıplarını aramak için kullanılır. Özellikle büyük metin dosyaları veya günlükler arasında arama yapmak için kullanışlıdır.
İşte bir örnek.
$string = "Hello, PowerShell World!"
$substring = "PowerShell"
if ($string | Select-String -Pattern $substring) {
Write-Output "The string contains the substring."
} else {
Write-Output "The string does not contain the substring."
}Burada, Select-String $substring içinde $substring tarafından belirtilen modeli arar ve bulunursa bir eşleşme nesnesi döndürür.
Yöntem 5: IndexOf() Yöntemini Kullanma
IndexOf() yöntemi, PowerShell'de bir dize içindeki bir alt dizenin ilk oluşumunun sıfır tabanlı dizinini döndürür. Alt dize bulunamazsa -1 değerini döndürür.
İşte başka bir örnek.
$string = "Hello, PowerShell World!"
$substring = "PowerShell"
if ($string.IndexOf($substring) -ne -1) {
Write-Output "The string contains the substring."
} else {
Write-Output "The string does not contain the substring."
}Bu örnekte, IndexOf $substring'in $string içinde olup olmadığını, başlangıç dizinini veya -1 döndürerek kontrol eder. bulunamadı.
Çıkış için aşağıdaki ekran görüntüsünde çıktıyı görebilirsiniz.
Çözüm
PowerShell, bir dizenin alt dize içerip içermediğini kontrol etmek için birden fazla yol sağlar; -like operatörünü, normal ifadeleri -match operatörüyle, Container() yöntemini, Select-String cmdlet'ini veya IndexOf<'u kullanarak kullanabilirsiniz. /code>() yöntemi vb.


