考虑以下代码段:
"12-18" -Contains "-"
您认为这评估为true,但事实并非如此。这将false改为评估。我不确定为什么会发生这种情况,但确实如此。
true
false
为避免这种情况,您可以改用它:
"12-18".Contains("-")
现在表达式将评估为真。
为什么第一个代码片段会这样?有什么特别的东西-不能很好地搭配-Contains吗?该文档没有提及任何有关它的内容。
-
-Contains
该-Contains运算符不进行子字符串比较,并且匹配必须是完整的字符串,并且用于搜索集合。
从您链接到的文档中:
-包含描述:收容操作员。 判断一组参考值是否包含单个测试值。
在您提供的示例中,您正在使用仅包含一个字符串项的集合。
如果您阅读链接到的文档,您将看到一个演示此行为的示例:
例子:
PS C:\> "abc", "def" -Contains "def" True PS C:\> "Windows", "PowerShell" -Contains "Shell" False #Not an exact match
我认为你想要的是-Match运营商:
-Match
"12-18" -Match "-"
哪个返回True。
True
重要提示: 正如评论和链接文档中所指出的,应该注意-Match运算符使用正则表达式来执行文本匹配。