小编典典

PowerShell 和 -contains 运算符

all

考虑以下代码段:

"12-18" -Contains "-"

您认为这评估为true,但事实并非如此。这将false改为评估。我不确定为什么会发生这种情况,但确实如此。

为避免这种情况,您可以改用它:

"12-18".Contains("-")

现在表达式将评估为真。

为什么第一个代码片段会这样?有什么特别的东西-不能很好地搭配-Contains吗?该文档没有提及任何有关它的内容。


阅读 92

收藏
2022-06-30

共1个答案

小编典典

-Contains运算符不进行子字符串比较,并且匹配必须是完整的字符串,并且用于搜索集合。

从您链接到的文档中:

-包含描述:收容操作员。 判断一组参考值是否包含单个测试值。

在您提供的示例中,您正在使用仅包含一个字符串项的集合。

如果您阅读链接到的文档,您将看到一个演示此行为的示例:

例子:

PS C:\> "abc", "def" -Contains "def"
True

PS C:\> "Windows", "PowerShell" -Contains "Shell"
False  #Not an exact match

我认为你想要的是-Match运营商:

"12-18" -Match "-"

哪个返回True

重要提示: 正如评论和链接文档中所指出的,应该注意-Match运算符使用正则表达式来执行文本匹配。

2022-06-30