PowerShell: 配列内のNullや空文字の要素を削除する
PowerShellで配列内にあるNullや空文字が入った要素を削除する 方法を解説します。
使用するのは比較演算子の「-ne」です。 比較演算子の左辺が配列の場合、 配列の各要素と右辺の値を比較してTrueとなる要素のみを抽出します。 つまり配列要素のフィルタリングの役目を果たしてくれます。
ですからNot Equalの意味の「-ne」を使って、 Null以外・空文字以外の要素を抽出すれば Nullや空文字の要素を削除できます。
次のコードでは比較演算子「-ne」の右辺に「$null」を指定して、 Nullの要素を除外しています。 Lengthプロパティの値で要素数が減っていることが確認できます。
$arr = "a", "b", $null, "c", $null, "d" Write-Host $arr Write-Host $arr.Length # Nullを削除 $arr = $arr -ne $null Write-Host $arr Write-Host $arr.Length # 実行結果 a b c d 6 a b c d 4
次は「-ne」の右辺に空文字("")を指定して、 空文字の要素を削除しています。
$arr = "a", "", "b", "c", "", "d" Write-Host $arr Write-Host $arr.Length # 空文字を削除 $arr = $arr -ne "" Write-Host $arr Write-Host $arr.Length # 実行結果 a b c d 6 a b c d 4
比較演算子の「-ne」以外でも「-eq・-gt・-ge・-lt・-le」を使うと 配列要素のいろいろなフィルタリング機能を実現できます。
(まとめ記事: PowerShell 配列)