当我对空字符串应用 split,然后应用相等比较时,我没有得到 $True 或 $False(见下文)。
更奇怪的是,当我将分割结果与空字符串进行比较时,我看到一些不可见的输出,而当我将分割结果与非空字符串进行比较时,我没有看到任何输出(见下文)。
PS > ''.split(',') -eq ''
PS > ''.split(',') -eq 'a'
PS > ''.split(',') -ne ''
PS > ''.split(',') -ne 'a'
PS >
Run Code Online (Sandbox Code Playgroud)
这种奇怪行为的原因是什么?
即使应用于空字符串,拆分操作也会生成一个包含 1 个元素的数组。参考SS64 - Comparison Operators对此进行了解释:
当应用于数组时,比较运算符将用作过滤器,返回所有匹配的值。
例如,以下@('a','b','c','a') -eq 'a'将返回等于的 2 个元素a
为了在示例中获得正确的结果,您必须计算返回的元素数量并检查是否有。
(''.split(',') -eq '').Count -ge 1 # Is True
(''.split(',') -eq 'a').Count -ge 1 # Is False
(''.split(',') -ne '').Count -ge 1 # Is False
(''.split(',') -ne 'a').Count -ge 1 # Is True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |