PowerShell: 文字列がNull(または空)かどうかを判定する
PowerShellで文字列がNull($null)または空文字("")かどうかを判定したい場合は、 .NET Framework StringクラスのIsNullOrEmptyメソッドを使用します。 ちなみにPowerShellではNullを「$null」と記述します。 Nullは「何もない」という意味で、Emptyは空文字("" 長さが0の文字列)のことです。
IsNullOrEmptyメソッドの書式は次の通りです。
書式
[string]::IsNullOrEmpty(変数)
指定した変数がNullか空文字の場合はTrue、 それ以外はFalseが戻ります。
次のサンプルコードでは、IsNullOrEmptyメソッドを使って 通常の文字列、Null、空文字の場合の戻り値を取得しています。
$a = "abc" $b = $null $c = "" [string]::IsNullOrEmpty($a) # False [string]::IsNullOrEmpty($b) # True [string]::IsNullOrEmpty($c) # True
Nullと空文字を区別したい場合
IsNullOrEmptyメソッドではNullまたは空文字の場合にTrueが戻ります。 そのためNullと空文字の区別はできません。 Nullと空文字を区別したい場合は自分で関数を作るか、 分岐処理を追加する必要があります。
次の自作関数Get-Null-Empty-Otherは、 引数がNull($null)の場合1、空文字("")の場合2、 それ以外の場合0が戻ります。
function Get-Null-Empty-Other($s) {
if ($s -eq $null){
return 1
} elseif ($s -eq ""){
return 2
} else {
return 0
}
}
$a = "abc"
$b = $null
$c = ""
Get-Null-Empty-Other $a # 0
Get-Null-Empty-Other $b # 1
Get-Null-Empty-Other $c # 2
参考サイト
String.IsNullOrEmpty(String) メソッド (System) | Microsoft Docs