在PowerShell中,是否有内置的isnullorempty类函数来检查字符串是否为空?
到目前为止我找不到它,如果有内置的方法,我不想为此写一个函数。
在PowerShell中,是否有内置的isnullorempty类函数来检查字符串是否为空?
到目前为止我找不到它,如果有内置的方法,我不想为此写一个函数。
当前回答
凯斯·希尔(Keith Hill)的回答(为了解释空白)的延伸:
$str = " "
if ($str -and $version.Trim()) { Write-Host "Not Empty" } else { Write-Host "Empty" }
对于空字符、空字符串和有空格的字符串,返回“Empty”,对于其他所有字符,返回“Not Empty”。
其他回答
可以同时使用IsNullOrWhitespace()和isNullOrEmpty()静态方法的条件语句来测试空白或空值。例如,在插入到MySQL数据库之前,我将遍历我将输入的值,并使用条件避免空值或空白值。
// RowData is iterative, in this case a hashtable,
// $_.values targets the values of the hashtable
```PowerShell
$rowData | ForEach-Object {
if(-not [string]::IsNullOrEmpty($_.values) -and
-not [string]::IsNullOrWhiteSpace($_.values)) {
// Insert logic here to use non-null/whitespace values
}
}
如果它是一个函数中的参数,你可以用ValidateNotNullOrEmpty验证它,就像你在这个例子中看到的那样:
Function Test-Something
{
Param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$UserName
)
#stuff todo
}
# cases
$x = null
$x = ''
$x = ' '
# test
if ($x -and $x.trim()) {'not empty'} else {'empty'}
or
if ([string]::IsNullOrWhiteSpace($x)) {'empty'} else {'not empty'}
凯斯·希尔(Keith Hill)的回答(为了解释空白)的延伸:
$str = " "
if ($str -and $version.Trim()) { Write-Host "Not Empty" } else { Write-Host "Empty" }
对于空字符、空字符串和有空格的字符串,返回“Empty”,对于其他所有字符,返回“Not Empty”。
PowerShell 2.0替换[string]::IsNullOrWhiteSpace()是字符串-notmatch "\S"
("\S" =任何非空白字符)
> $null -notmatch "\S"
True
> " " -notmatch "\S"
True
> " x " -notmatch "\S"
False
性能非常接近:
> Measure-Command {1..1000000 |% {[string]::IsNullOrWhiteSpace(" ")}}
TotalMilliseconds : 3641.2089
> Measure-Command {1..1000000 |% {" " -notmatch "\S"}}
TotalMilliseconds : 4040.8453