PowerShell の contains 演算子

Migel Hewage Nimesha 2022年4月12日
PowerShell の contains 演算子

PowerShell には、指定した入力文字列に一致する要素をフィルター処理/比較または検索できるさまざまな演算子があります。-contains は、包含タイプの演算子として分類される主要な比較演算子の 1つです。

4つの主要な包含タイプ演算子があります。

  • -contains
  • -notcontains
  • -in
  • -notin

この記事では、-contains 演算子のみに焦点を当てています。この演算子は、一致する場合は常にブール値(true / false)を返します。また、パフォーマンス面では、-contains 演算子は、最初の一致が見つかるとすぐに入力の比較を停止するため、結果を返すのが非常に高速です。

PowerShell の -contains 演算子

この演算子を使用して、コレクションに特定の要素が含まれているかどうかを確認できます。構文は次のとおりです。

[set/collection] -contains [test-value or test-object]

[set/collection] は、文字列値のセット(カンマ区切り)にすることができます。たとえば、 "Hello"または "FOX", "2ndLane"です。

[test-value または test-object] は、要素または要素のセット(コレクション)にすることができます。たとえば、 "Hello"または "Hello", "FOX", "No2"です。

特定の要素を確認する

  • 例 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"

出力:

True

入力要素/値は"2ndLane"で、左側のコレクション/セットにあります。したがって、出力/結果は明らかに True です。

  • 例 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"

出力:

False

入力要素/値は"NotInTheCollection"であり、右側のコレクションには含まれていません。したがって、上記のコマンドは False と評価されました。

-contains 演算子に関する重要な事実は、指定されたコレクション/セット内の正確な入力要素をチェックすることです。部分/サブ文字列が入力要素として指定されている場合、コマンドは False として評価されます。

  • 例 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"

出力:

False

上記の例では、入力要素は"StringGiven"ですが、右側のコレクションの"FullStringGiven"要素のサブストリングです。したがって、入力要素は右側のコレクションの正確な要素と一致せず、結果は期待どおり False になります。

PowerShell の -contains 演算子を使用して要素/コレクションのセットを確認する

-contains 演算子の最大の利点の 1つは、指定されたコレクション/セットが入力コレクションと一致するかどうかを検出するために使用できることです。オペレーターは、左側(指定されたコレクション)と右側(入力コレクション/テストコレクション)に同じインスタンスが存在するかどうかを確認することに注意してください。つまり、これらの包含演算子は、入力オブジェクト(test-object)がコレクションである場合に参照の等式を使用します。

例 01

$leftsideobj = "Hello", "NewString1"

ここでは、$leftsideobj 変数を要素のセット(コレクション)に割り当てます。

$leftsideobj, "AnotherString" -contains $leftsideobj

次に、-contains 演算子を使用して一致するものを見つけます。

出力:

True

このコマンドは True と評価されています。入力コレクションは $leftsideobj であり、同じインスタンスが左側のコレクションで使用できるためです。これは、参照の同等性が満たされていることを意味します。したがって、結果は True になります。

例 02

$newleftsideobj = "Hello", "Test"

ここでは、"Hello"要素と"Test"要素を含むコレクションに割り当てられた $newleftsideobj 変数を取得しました。

`"Hello", "Test", "NewString1" -contains $newleftsideobj`

出力:

False

上記のコマンドは False と評価されました。入力コレクション(右側)が $newleftsideobj であることがわかります。これは、間接的に 2つの要素"Hello""Test"です。左側に気付いた場合は、"Hello"要素と"Test"要素を使用できます。しかし、それは参照の等式を満たしていません。そのため、出力は False になります。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

関連記事 - PowerShell Operator