HashTable'ın PowerShell'de Anahtar İçerip içermediğini kontrol edin [2 Yol]


ContainsKey() Yöntemini Kullanma

HashTable'ın PowerShell'de bir anahtar içerip içermediğini kontrol etmek için .ContainsKey() yöntemiyle if ifadesini kullanın.

ContainerKey() Yöntemini kullanın:

$hashTable = @{'Name'='PowerShell'; 'Version'=7.0}
$key = 'Name'
if($hashTable.ContainsKey($key)){
    Write-Host "Key '$key' exists in the hash table."
}else{
    Write-Host "Key '$key' does not exist in the hash table."
}

ÇIKTI:

Key 'Name' exists in the hash table.

PowerShell'de hash tabloları oluşturma konusunda yeterli bilgiye sahip olduğunuzu varsayıyoruz ancak bu yazıda herkesin rahat etmesi için kısaca anlatalım. PowerShell'de karma tablo oluşturmanın en kolay yöntemi @{ sözdizimini aşağıdaki gibi kullanmaktır:

Bir Hash Tablosu Oluşturun:

$YourHashTableName = @{
'key1' = 'Value'
'key2' = 'Value'
'key3' = 'Value'
'key4' = 'Value'
}

Her bir anahtar/değer çiftini diğerinden ayırmak için satır sonu veya noktalı virgül (;) kullanabiliriz. Hash tabloları hakkında daha fazla ayrıntıyı burada bulabilirsiniz. Yukarıdaki kodda, iki anahtar/değer çiftine sahip $hashTable adında bir karma tablosu oluşturuyoruz: 'Name'='PowerShell' ve 'Version'=7.0 .

Ardından, bir anahtar içeren $key değişkenini (bu örnekte 'Name') oluşturup başlattık ve .ContainsKey() $key değişkeninde saklanan anahtarın $hashTable'da mevcut olup olmadığını değerlendirme yöntemi. .ContainsKey() yöntemi, anahtar karma tablosunda bulunursa True değerini döndürür; aksi halde Yanlış.

Write-Host cmdlet'ini kullanarak özel bir ileti görüntülemek için $hashTable.ContainsKey($key) ifadesini if ifadesinin içine ekledik. if ifadesi Doğru/Yanlış ise, sırasıyla kullanıcıya verdiğiniz anahtarın hash tablosunda var/yok olduğunu şu şekilde bildiririz: Konsolda bir mesaj görüntüleniyor.

Bu yaklaşım, $key değişkeninin değerini değiştirerek karma tablosundaki farklı anahtarların varlığını hızlı bir şekilde kontrol etmemize olanak tanır, bu da onu daha yeniden kullanılabilir hale getirir. Ancak .ContainsKey() yönteminin varsayılan olarak büyük/küçük harfe duyarlı olmadığını unutmamak önemlidir.

ContainerKey() Yöntemini kullanın:

$hashTable = @{'Name'='PowerShell'; 'Version'=7.0}
$keys = ('name', 'Name', 'Version', 'Names')
for ($i = 0; $i -lt $keys.Length; $i++){
    if($hashTable.ContainsKey($keys[$i])){
        Write-Host "Key '$($keys[$i])' exists in the hash table."
    }else{
        Write-Host "Key '$($keys[$i])' does not exist in the hash table."
    }
}

ÇIKTI:

Key 'name' exists in the hash table.
Key 'Name' exists in the hash table.
Key 'Version' exists in the hash table.
Key 'Names' does not exist in the hash table.

Yukarıdaki kod için dört anahtar içeren bir $keys dizimiz vardı. Bu dizi üzerinde yineleme yapmak için bir for döngüsü kullandık; her yinelemede, her anahtarı kontrol etmek için .ContainsKey() yöntemini kullandık. Son olarak, belirtilen anahtarın hash tablosunda bulunup bulunmadığına bağlı olarak farklı mesajları görüntülemek için if-else kullanıldı.

$hashTable'ın nasıl oluşturulduğunu ve neden if-else bloğunu kullandığımızı biliyoruz. Bundan sonra her şeyi anlatıp ayrıntılara girmeyeceğiz, o yaklaşımda kullanılan yöntem/operatör üzerinde duracağız.

-contains Operatörünü Kullanma

HashTable'ın PowerShell'de bir anahtar içerip içermediğini kontrol etmek için if ifadesini -contains operatörüyle birlikte kullanın.

-contains Operatörünü kullanın:

$hashTable = @{'Name'='PowerShell'; 'Version'=7.0}
$key = 'Name'
if($hashTable.Keys -contains $key){
    Write-Host "Key '$key' exists in the hash table."
}else{
    Write-Host "Key '$key' does not exist in the hash table."
}

ÇIKTI:

Key 'Name' exists in the hash table.

Alternatif olarak aynısını yapmak için .Contains() yöntemini de kullanabiliriz.

.Contains() Yöntemini kullanın:

$hashTable = @{'Name'='PowerShell'; 'Version'=7.0}
$key = 'Name'
if($hashTable.Keys.Contains($key)){
    Write-Host "Key '$key' exists in the hash table."
}else{
    Write-Host "Key '$key' does not exist in the hash table."
}

ÇIKTI:

Key 'Name' exists in the hash table.

Yukarıdaki iki kod örneğinde -contains operatörünü ve .Contains() yöntemini kullandık; her ikisi de $key'de saklanan anahtarın $hashTable'da mevcut olup olmadığını kontrol eder.

-contains operatörü, belirtilen değerin $hashTable anahtar koleksiyonunda mevcut olup olmadığını belirten bir Boolean değeri döndüren bir karşılaştırma operatörüdür. Koleksiyondaki her anahtarı tek tek $key değişkeninde saklanan değerle karşılaştırdı ve bir eşleşme bulunursa True değerini döndürdü; aksi takdirde False olur.

Bazı öğrenciler -contains yerine -eq operatörünü kullanır, ancak -eq operatörü bazen çalışabilir ancak -eq<'yi kullanır Karma tablosundaki anahtar koleksiyonunun 'Ad' dizesine eşit olup olmadığını kontrol etmek için /code> operatörü mantıklı değildir çünkü bir dize koleksiyonu tek bir dizeye eşit olamaz.

Kontrol etmek için $hashTable.Keys koleksiyonunda .Contains() yöntemini veya -contains operatörünü kullanmak daha uygun olacaktır. karma tablosundaki belirli bir anahtar.

-contains operatörünün büyük/küçük harfe duyarlı olmadığını, yani 'Ad ve 'name' tuşlarının aynı olduğunu unutmamak önemlidir. Ayrıca performans söz konusu olduğunda -contains operatörü .Contains() yönteminden daha hızlıdır.

Bunların hepsi HashTable'ın PowerShell'de anahtar içerip içermediğini kontrol etmeyle ilgili.

İlgili makaleler