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