PowerShellでNull・空白のみ・空文字をチェック

PowerShell

PowerShellでNull・空白のみ・空文字をチェック方法を洗い出してみました。

文字列を検証するメソッドでチェック

メソッド名説明備考
[System.String]::IsNullOrEmpty対象の文字列が Null または 空文字 の場合に True を返す。
空白のみの文字列は該当しないため、Falseで返す。
最初のデータ型を省略し、[string]::IsNullOrEmptyという表記でも問題なく動作する。
[System.String]::IsNullOrWhiteSpace対象の文字列が Null または 空白のみ または 空文字 の場合に True を返す。文字のなかに空文字を含んでいない為、メソッド名がわかりにくい。
もしかするとWhiteSpaceの意味に空白のみ空文字の2つの意味が含まれているのかもしれない。
上記と同様に最初のデータ型は簡易な表記に省略可能。

Nullと空文字”をチェック可能な「IsNullOrEmptyメソッド」

# Null は True
PS C:\WINDOWS\system32> [System.String]::IsNullOrEmpty($null)
True
PS C:\WINDOWS\system32>
# 空文字 も True
PS C:\WINDOWS\system32> [System.String]::IsNullOrEmpty('')
True
PS C:\WINDOWS\system32>
# 空白のみ は False
PS C:\WINDOWS\system32> [System.String]::IsNullOrEmpty(' ')
False
PS C:\WINDOWS\system32>
# 文字あり だと False
PS C:\WINDOWS\system32> [System.String]::IsNullOrEmpty(' abc ')
False

Nullと空文字と空文字のみ”をチェック可能な「IsNullOrWhiteSpaceメソッド」

# Null は True
PS C:\WINDOWS\system32> [System.String]::IsNullOrWhiteSpace($null)
True
PS C:\WINDOWS\system32>
# 空文字 も True
PS C:\WINDOWS\system32> [System.String]::IsNullOrWhiteSpace('')
True
PS C:\WINDOWS\system32>
# 空白のみ も True
PS C:\WINDOWS\system32> [System.String]::IsNullOrWhiteSpace(' ')
True
PS C:\WINDOWS\system32>
# 文字あり だと False
PS C:\WINDOWS\system32> [System.String]::IsNullOrWhiteSpace(' abc ')
False

if文でチェック

# 値の設定
$CheckNullString = ''
#$CheckNullString = '  '
#$CheckNullString = $null

# 複数のif文で空文字・空白のみ・Nullのチェック
#   Nullチェック
if ($null -eq $CheckNullString) {
    Write-Warning '値がNull。'
    return
}
#   空文字をチェック
elseif ($CheckNullString -eq '') {
    Write-Warning '値が空文字。'
    return
}
#   空白のみをチェック
elseif ($CheckNullString.Trim() -eq '') {
    Write-Warning '値が空白のみ。'
    return
}
$nullについて知りたいこと - PowerShell
PowerShell $nullは、多くの場合、単純に見えますが、多くの微妙な違いがあります。 予期せず null 値に遭遇したときに何が起こるかを知るために、$nullを詳しく見てみましょう。

コメント