PowerShell和-contains运算符
PowerShell和-contains运算符
考虑以下代码片段:
"12-18" -Contains "-"
你可能认为这将评估为true
,但实际上不是这样。相反,这将评估为false
。我不确定为什么会这样,但确实是这样的。
为了避免这种情况,可以改用以下代码片段:
"12-18".Contains("-")
现在表达式将评估为true。
第一个代码片段为什么会发生这种情况?有没有什么特殊的-
与-Contains
不兼容的地方?文档中没有提到任何相关内容。
admin 更改状态以发布 2023年5月22日
-Contains
实际上是一个集合操作符。如果集合包含该对象,则为真。它不仅限于字符串。
-match
和-imatch
是正则表达式字符串匹配器,并设置自动变量以使用捕获。
-like
,-ilike
是类似SQL的匹配器。
-Contains
操作符无法进行子字符串比较,匹配必须是完整的字符串,并且用于搜索集合。
从您链接的文档中可以看到:
-Contains
描述:包含操作符。告诉您一个符号值集合是否包含单个测试值。
在您提供的示例中,您正在处理包含一个字符串项的集合。
如果您阅读您链接到的文档,您会看到一个演示此行为的示例:
示例:
PS C:\> "abc", "def" -Contains "def" True PS C:\> "Windows", "PowerShell" -Contains "Shell" False #Not an exact match
我认为您想要的是-Match
操作符:
"12-18" -Match "-"
它返回True
。