powershell - 为什么 '^\S' 不适用于第一个字符或 NULL 值?
问题描述
我有一个变量,它包含一个表中的两个值(使用-expandproperty
)
$variable = "value1,value2"
我有一个检查以确保$variable
没有返回任何 NULL/空值
if(($variable.Split(",") | Where { $_ -match '^\S'}).count -lt 1)
{write "no value!"}
else
{write $variable}
但由于某种原因,即使'^\S'
应该只检查第一个字符/索引是否有空格,它也会输出“
没有价值
" 条件结果...应该输出
值1,值2
反而...
不仅如此,如果表列值为NULL
,它不会识别它,而是尝试输出第二个条件write $variable
这是为什么??
解决方案
检查“空或空”的另一种方法是使用[string]IsNulOrEmpty()
静态方法。像这样的东西......
$Var1 = "value1,value2"
$Var2 = ''
$Var3 = $Null
$Var1, $Var2, $Var3 |
ForEach-Object {
$_
[string]::IsNullOrEmpty($_)
}
输出 ...
value1,value2
False
True
True
请注意,最后$Null
没有产生新行,而第二项 [一个空字符串] 产生了。
推荐阅读
- c# - 如何在 Xamarin 应用程序中初始化 IoC 容器?
- c# - C#如何将数字作为浮点数传递给函数?
- javascript - React 的 ref 的流类型
- crystal-reports - 如何为水晶报表和 sap b1 配置令牌和布局?
- android - 如何在 Kotlin 中附加 2 个字符串?
- javascript - 如何在 JavaScript 中获取标签的值
- javascript - javascript函数使用ajax返回真/假
- python - Python Pandas : how to format a float with space between thousands, millions, etc
- javascript - Chart.JS 插件在使用两次时导致错误
- python - 在 Django 项目中添加新的 URL