2016-10-06 14 views
0

Powershell 2.0の場合:Powershell 2.0:ハッシュテーブルキーの文字列とのマッチングや類似方法

私はいくつかの文字列をキーとして持つハッシュテーブルを持っています。 @{}.containskeyとは異なり、ワイルドカード(例:"*xampl*")を使用してキー(例:"examplekey")を見つけることはできますか?

私は、キーのリストを作成し、Where-Objectをフィルタとして使用したいという目的を達成できました。しかし、それを行う簡単な方法はありますか?私は毎回リストを再作成する必要があるので、このメソッドは私が新しいキーを追加するときには特に悪いと思う。

答えて

1

利用キーの配列(または単一のキー)を返し.Keys性及び-like又は-notlike演算子:

if ($hash.keys -notlike '*xampl*') { 
    $hash.example = 1 
} 

ストア複数のチェックのための配列のキー:

$keys = $hash.keys 
if ($keys -notlike '*xampl*') { 
    $hash.example = 1 
} 
if ($keys -notlike '*foo*') { 
    $hash.example = 1 
} 

比較の連鎖:

if ($hash.keys -notlike '*xampl*' -notlike '*123*') { 
    $hash.example = 1 
} 

それともそこキーの多くがあり、あなたがチェックの多くを実行したい場合には正規表現を使用します。各キーが個別にテストされています

if ($hash.keys -join "`n" -match '(?mi)xampl|foo|bar|^herp\d+|\wDerp$|^and$|\bso\b|on') { 
    echo 'Already present' 
} else { 
    $hash.foo123 = 'bar' 
    # ...... 
} 

(?mi) nsensitiveモード大文字メートル ultilineを意味します。