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 配列

PowerShell