Dizinin PowerShell'de Dizenin Bir Parçasını İçerip İçmediği Nasıl Kontrol Edilir
PowerShell'de bir dizinin bir dizenin bir kısmını mı yoksa bir alt dizeyi mi içerdiğini kontrol etmeniz gerekiyor mu? Bu PowerShell eğitiminde, PowerShell'de bir dizinin bir dizenin bir kısmını içerip içermediğinin nasıl kontrol edileceğini açıklayacağım.
PowerShell'deki bir dizinin bir dizenin parçası olan bir öğe içerip içermediğini kontrol etmek için -match operatörünü döngü veya dizi filtrelemeyle kullanabilirsiniz. Örneğin, $containsPart=$array -match 'partOfString', 'partOfString'i içeren tüm öğeleri döndürür. Herhangi bir eşleşme olup olmadığını kontrol etmek ve bir boole sonucu almak istiyorsanız $array -match 'partOfString' -ne $null komutunu kullanabilirsiniz.
Dizinin PowerShell'de Dizenin Bir Parçasını İçerip İçmediğini Kontrol Edin
Şimdi PowerShell'de bir dizinin bir dizenin bir bölümünü içerip içermediğini kontrol etmenin farklı yöntemlerini örneklerle inceleyelim.
Yöntem 1: -match Operatörünü Kullanma
PowerShell'deki -match operatörü, normal ifadelerle kalıp eşleştirme için kullanılır. Bir dizideki herhangi bir öğenin belirli bir kalıpla eşleşip eşleşmediğini veya PowerShell'de bir alt dize içerip içermediğini kontrol etmek için kullanılabilir.
İşte bir örnek:
$array = @('apple', 'banana', 'cherry', 'date')
$substring = 'an'
foreach ($item in $array) {
if ($item -match $substring) {
Write-Host "Match found: $item"
}
}
Bu betik, 'an' alt dizesini içerdiğinden 'muz' çıktısını alacaktır.
PowerShell betiğini VS kodunu kullanarak çalıştırıyorum ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
Yöntem 2: -contains Operatörünü kullanma
-contains operatörü, bir koleksiyonun PowerShell'de belirtilen bir değer içerip içermediğini kontrol eder. Ancak, -contains özelliğinin kısmi eşleşmeyi değil tam eşleşmeyi kontrol ettiğini unutmamak önemlidir.
-contains operatörünü kullanarak dizinin PowerShell'deki dizenin bir kısmını içerip içermediğini kontrol etmek için betiğin tamamı burada verilmiştir.
$array = @('apple', 'banana', 'cherry', 'date')
$value = 'banana'
if ($array -contains $value) {
Write-Host "$value is in the array."
}Bu komut dosyası, dizideki tam bir eşleşme olduğundan 'muz dizidedir' çıktısını verecektir.
Yöntem 3: Kısmi Eşleşmeler için Özel İşlev
-contains kısmi eşleşmelerde çalışmadığından, PowerShell dizisindeki her öğeyi yineleyen ve alt dizenin mevcut olup olmadığını kontrol eden özel bir işlev oluşturabilirsiniz.
İşte bir örnek.
function Find-PartialMatch {
param (
[string[]]$array,
[string]$substring
)
foreach ($item in $array) {
if ($item -like "*$substring*") {
Write-Host "Partial match found: $item"
}
}
}
$array = @('apple', 'banana', 'cherry', 'date')
$substring = 'an'
Find-PartialMatch -array $array -substring $substringBu komut dosyası, 'Kısmi eşleşme bulundu: banana' sonucunu verecektir çünkü 'muz', 'an' alt dizesini içermektedir.
Çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
Yöntem 4: -like Operatörünü Joker Karakterlerle Kullanma
-benzeri operatörü, dizelerdeki kalıpları eşleştirmek için joker karakterler kullanmanıza olanak tanır. Yıldız işareti * joker karakteri herhangi bir sayıda karakteri temsil eder. Bu, dizinin PowerShell'deki dizenin bir kısmını içerip içermediğini kontrol etmenin başka bir en iyi yoludur.
İşte PowerShell betiğinin tamamı.
$array = @('apple', 'banana', 'cherry', 'date')
$substring = '*an*'
foreach ($item in $array) {
if ($item -like $substring) {
Write-Host "Match found: $item"
}
}
Bu komut dosyası, 'Eşleşme bulundu: muz' çıktısını verecektir çünkü 'muz', 'an' alt dizesiyle kalıpla eşleşir.
Çözüm
PowerShell, bir dizinin alt dize içerip içermediğini kontrol etmek için çeşitli yöntemler sağlar. Kalıp eşleştirme için -match ve -like operatörleri kullanılabilirken, -contains operatörü tam eşleşmeleri kontrol eder. Kısmi eşleşmeler için, joker karakterlerle benzeri operatörünü kullanabilir veya dizide yineleme yapmak ve her öğeyi kontrol etmek için özel bir işlev oluşturabilirsiniz.
Bu PowerShell eğitiminde, aşağıdaki gibi çeşitli yöntemleri kullanarak bir dizinin PowerShell'deki bir dizenin bir bölümünü içerip içermediğini kontrol etmenin nasıl yapılacağını açıkladım:
- -match Operatörünü Kullanma
- -contains Operatörünü Kullanma
- Kısmi Eşleşmeler için Özel İşlev
- -like Operatörünü Joker Karakterlerle Kullanmak

