PowerShell 包含運算符

在 PowerShell 中,有不同的運算子可以過濾/比較或查找匹配指定輸入字符串的元素。-contains
是主要的比較運算子之一,歸類為包含類型的運算子。
有四個主要的包含類型運算子。
-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 or 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
。
使用 -contains
運算子檢查元素集合/集合
-contains
運算子的一個最大優勢是它可以用來查找給定集合/集是否匹配輸入集合。重要的是要記住,運算子檢查左側(給定集合)和右側(輸入集合/測試集合)是否存在相同的實例。這意味著這些包含運算子在輸入對象(測試對象)為集合時使用參考相等性。
範例 01
$leftsideobj = "Hello", "NewString1"
在這裡,我們將 $leftsideobj
變數分配給元素集(集合)。
$leftsideobj, "AnotherString" -contains $leftsideobj
然後,我們使用 -contains 運算子來查找匹配。
輸出:
True
此命令已被評估為 True
。因為輸入集合是 $leftsideobj
,並且在左側集合中存在相同的實例。這意味著參考相等性已被滿足。因此,結果是 True
。
範例 02
$newleftsideobj = "Hello", "Test"
在這裡,我們將 $newleftsideobj
變數分配給包含 "Hello"
和 "Test"
元素的集合。
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
輸出:
False
上述命令被評估為 False
。你可以看到輸入集合(右側)是 $newleftsideobj
,它間接包含了兩個元素 "Hello"
和 "Test"
。如果你注意到左側,我們有 "Hello"
和 "Test"
元素可用。但是它不滿足參考相等性。因此輸出是 False
。
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.