PowerShell 包含运算符

Migel Hewage Nimesha 2022年5月16日
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

在 PowerShell 中使用 -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 的原因。

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