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を詳しく見てみましょう。


コメント