因为在PowerShell中没有
image(A, sizeOfCell=10)
参数属性,最好使用
[ValidateNotNullOrWhiteSpace()]
作为参数属性,然后查找函数内的空格,或者我应该使用
[ValidateNotNullOrEmpty()]
作为参数属性。
我不确定NotNullOrEmpty属性真正有用的是什么,因为99%的时间,我不想让它永远有效:
[ValidateScript({ -not ([String]::IsNullOrWhiteSpace($_)) })]
但是因为“”仍然是一个字符串,它将传递NotNullOrEmpty属性。
答案 0 :(得分:6)
[ValidateNotNullOrEmpty()]
可以完全按照它所说的那样做。
要回答您的第一个问题,我会使用您概述的[ValidateScript(...)]
方法。
要记住的一件事是[ValidateScript()]
的错误消息通常很糟糕,并没有帮助最终用户。作为解决方法,您可以这样做:
[ValidateScript( {
![String]::IsNullOrWhiteSpace($_) -or throw 'Your string is null or contains whitespace'
} )]
您还可以在throw中包含一个异常类:
throw [System.ArgumentException]'Blah blah whitespace'
答案 1 :(得分:0)
一个简单的解决方法是仅Trim()
空白并在[string]::IsNullOrEmpty()
内调用[ValidateScript()]
:
[ValidateScript({
if ([string]::IsNullOrEmpty($_.Trim()))
{
throw "Your string is null or empty."
} else {
$true
}
})]
这将处理所有$null
,""
和" "
的情况,因为所有空白" "
都将被转换为""
。