PowerShell'de Dizeler Nasıl Karşılaştırılır?


PowerShell'de dizelerle çalışıyorsanız PowerShell'de dizeleri karşılaştırma gereksinimleriyle karşılaşabilirsiniz. Bu PowerShell eğitiminde PowerShell'de stringleri çeşitli yöntemler kullanarak nasıl karşılaştıracağımı örneklerle anlatacağım.

PowerShell'de dizeleri karşılaştırmak için, büyük/küçük harfe duyarlı olmayan eşitlik denetimleri için -eq operatörünü veya büyük/küçük harfe duyarlı karşılaştırmalar için -ceq operatörünü kullanabilirsiniz. .Equals() yöntemi, büyük/küçük harfe duyarsızlık için OrdinalIgnoreCase gibi seçeneklerle esneklik sağlar. Desen eşleştirme için joker karakterlerle birlikte -like operatörünü veya normal ifadeler için -match operatörünü kullanın. Ayrıca Compare-Object, farklılıkları vurgulamak için iki dize kümesini karşılaştırabilir.

PowerShell'deki Dizeleri Karşılaştırın

PowerShell'deki dizeleri karşılaştırmak için kullanabileceğiniz birden çok yöntem şunlardır.

1. -eq Operatörünü Kullanmak

PowerShell -eq operatörü, iki dizenin tam olarak eşit olup olmadığını kontrol etmek için kullanılır. Varsayılan olarak bu karşılaştırma büyük/küçük harfe duyarlı değildir.

Örnek:

$string1 = "NewYork"
$string2 = "newyork"

if ($string1 -eq $string2) {
    Write-Output "The strings are equal."
} else {
    Write-Output "The strings are not equal."
}

Bu örnekte çıktı "Dizeler eşittir" olacaktır. çünkü -eq operatörü varsayılan olarak büyük/küçük harf dikkate almaz.

Aşağıdaki ekran görüntüsü, yukarıdaki PowerShell betiğini VS kodunu kullanarak çalıştırdıktan sonraki çıktıyı gösteriyor.

Büyük/küçük harfe duyarlı bir karşılaştırma için PowerShell'de aşağıdaki örnekteki gibi -ceq operatörünü kullanabilirsiniz.

$string1 = "NewYork"
$string2 = "newyork"

if ($string1 -ceq $string2) {
    Write-Output "The strings are equal."
} else {
    Write-Output "The strings are not equal."
}

Burada çıktı “Dizeler eşit değil” olacaktır. çünkü -ceq dizelerin büyük/küçük harf durumunu dikkate alır.

Burada çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

PowerShell'de Değişkenleri Dizelere Dönüştürme bölümünü okuyun

2. -ne Operatörünü Kullanmak

-ne operatörü, PowerShell'de iki dizenin eşit olup olmadığını kontrol eder. Bu aynı zamanda varsayılan olarak büyük/küçük harfe duyarlı değildir.

Örnek:

$string1 = "JaneDoe"
$string2 = "JaneSmith"

if ($string1 -ne $string2) {
    Write-Output "The strings are not equal."
} else {
    Write-Output "The strings are equal."
}

Çıktı "Dizeler eşit değil" olacaktır. çünkü JaneDoe, JaneSmith'ten farklıdır.

Yukarıdaki kodu çalıştırdım ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

3. .Equals() Yöntemini Kullanmak

İşte PowerShell'de dizeleri karşılaştırmak için başka bir yöntem, .Equals() yöntemi. .Equals() yöntemi, büyük/küçük harf duyarlılığını belirterek dizeleri karşılaştırmanıza olanak tanır.

Örnek:

$string1 = "MichaelSmith"
$string2 = "michaelsmith"

if ($string1.Equals($string2, [System.StringComparison]::OrdinalIgnoreCase)) {
    Write-Output "The strings are equal."
} else {
    Write-Output "The strings are not equal."
}

Bu örnekte çıktı "Dizeler eşittir" olacaktır. çünkü OrdinalIgnoreCase karşılaştırmayı büyük/küçük harfe duyarlı hale getirir.

Büyük/küçük harfe duyarlı bir karşılaştırma için Ordinal'i kullanabilirsiniz:

if ($string1.Equals($string2, [System.StringComparison]::Ordinal)) {
    Write-Output "The strings are equal."
} else {
    Write-Output "The strings are not equal."
}

Burada çıktı “Dizeler eşit değil” olacaktır. çünkü Ordinal büyük/küçük harf duyarlılığını zorunlu kılar.

PowerShell'de Bir Dizeyi Word'e Göre Böl'ü okuyun

4. Nesne Karşılaştırma Cmdlet'ini Kullanma

Compare-Object cmdlet'i, iki dize kümesini karşılaştırırken ve PowerShell'deki farkları bulurken kullanışlıdır.

Örnek:

$array1 = @("AliceJohnson", "BobSmith", "CharlieBrown")
$array2 = @("AliceJohnson", "CharlieBrown", "DavidWilliams")

$comparison = Compare-Object -ReferenceObject $array1 -DifferenceObject $array2

foreach ($difference in $comparison) {
    Write-Output $difference
}

Çıktı, iki dizi arasındaki farkları gösterecektir:

InputObject SideIndicator
----------- -------------
BobSmith    <=
DavidWilliams =>

5. -like ve -match Operatörlerini Kullanmak

PowerShell'deki dizeleri karşılaştırmak için -like ve -match operatörlerini de kullanabilirsiniz.

-like operatörü joker karakter deseni eşleştirmesi için kullanılırken, -match operatörü normal ifadeleri kullanır.

-benzeri örneği:

$string = "JessicaJones"

if ($string -like "Jessica*") {
    Write-Output "The string starts with 'Jessica'."
}

Çıktı şu olacaktır: "Dize 'Jessica' ile başlıyor." çünkü -like joker karakter desenlerini destekler.

-match ile örnek:

$string = "JessicaJones"

if ($string -match "^Jessica") {
    Write-Output "The string starts with 'Jessica'."
}

Çıktı önceki örnekle aynı olacaktır ancak -match karşılaştırmayı gerçekleştirmek için normal bir ifade kullanır.

Çözüm

PowerShell'de dizeleri karşılaştırmak, -eq ile eşitlik kontrolü yapmak veya .Equals() kullanmak ya da -like ile gelişmiş desen eşleştirmeyi kullanmak gibi çeşitli yollarla yapılabilir. ve -eşleşme.

Umarım artık çeşitli yöntemler kullanarak PowerShell'deki dizeleri nasıl karşılaştıracağınızı çok iyi anlamışsınızdır.

İlgili makaleler