powershell - 对powershell中的空字符串应用拆分后,相等运算符不产生真/假输出的原因是什么?
问题描述
当我对空字符串应用 split 然后应用相等比较时,我没有得到 $True 或 $False (见下文)。
更奇怪的是,当我将拆分结果与空字符串进行比较时,我看到了一些不可见的输出,而当我将拆分结果与非空字符串进行比较时,我没有看到任何输出(见下文)。
PS > ''.split(',') -eq ''
PS > ''.split(',') -eq 'a'
PS > ''.split(',') -ne ''
PS > ''.split(',') -ne 'a'
PS >
这种奇怪行为的原因是什么?
解决方案
即使应用于空字符串,拆分操作也会生成一个包含 1 个元素的数组。参考SS64 - 比较运算符将其解释为:
当应用于数组时,比较运算符将作为过滤器返回所有匹配的值。
例如,以下@('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
推荐阅读
- javascript - 如何访问使用 GSAP 创建的 SVG 的填充颜色属性
- javascript - Angular 自定义 FormControl 验证
- angular - Angular:我的父组件(更改)当它通过输入文本获取输出时,但当通过按钮设置输入时它不(更改)
- javascript - 防止 Android Chrome 在与媒体控件交互时滚动到焦点项目
- python - any([a == b for a, b in zip(string, string[1:])]) 是如何工作的
- in-app-purchase - 如何在 Google Play 控制台中创建不可更新订阅
- python - 使用 Python Dash Cytoscapes 更改节点标签的颜色
- javascript - 使用javascript在html画布中添加图像不起作用
- window-resize - 配合窗口移动/调整大小键绑定
- html - 用于阿拉伯语页面的 RTL 中的超级菜单弹出