当我在一个空字符串上应用split,然后应用相等比较时,我没有得到$ True或$ False(见下文)。
更奇怪的是,当我将拆分结果与空字符串进行比较时,看到一些不可见的输出,而当我将拆分结果与非空字符串进行比较时,则看不到任何输出(请参见下文)。
PS > ''.split(',') -eq ''
PS > ''.split(',') -eq 'a'
PS > ''.split(',') -ne ''
PS > ''.split(',') -ne 'a'
PS >
这种奇怪行为的原因是什么?
最佳答案
即使将分割操作应用于空字符串,其结果也会产生一个由1个元素组成的数组。引用SS64 - Comparison Operators将其解释为:
When applied to an array, comparison operators will work as a filter returning all the values which match.
例如,以下
@('a','b','c','a') -eq 'a'
将返回等于a
的2个元素为了在示例中获得正确的结果,您必须计算返回的元素数,并检查是否有元素。
(''.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
关于powershell - 在powershell中对空字符串应用拆分后,相等运算符不产生True/False输出的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489334/