PowerShell: 文字列を連結(結合)する「+ += * *= Join」

PowerShellで文字列を連結(結合)する場合、 最もオーソドックスなのが「+」演算子ですが、 他にも「+=, *, *=」演算子やJoinメソッド等があります。 ここではそれぞれの方法について解説していきます。

「+」演算子での文字列連結(結合)

文字列の連結で最も使われるのが「+」演算子です。 「+」演算子で連結するパターンとしては次の4つがあります。

  • 変数 + 変数
  • 変数 + 文字列リテラル
  • 文字列リテラル + 変数
  • 文字列リテラル + 文字列リテラル

上のパターンの具体的なコードは次の通りです。 いずれも文字列「Hello World」という出力結果になります。

$a = "Hello "
$b = "World" 

Write-Host ($a + $b)

Write-Host ($a + "World")

Write-Host ("Hello " + $b)

Write-Host ("Hello " + "World")

「+=」演算子での文字列連結+代入

「+=」演算子には「連結 + 代入」の機能があります。

「+=」演算子の左辺には変数を、 右辺には変数又は文字列リテラルを記述します。 そして左辺の変数に右辺の文字列を連結して代入します。 具体的なコード例は次の通りです。

$a = "Hello "

$a += "World"

Write-Host $a  # Hello World

「+=」演算子はループ処理内で1つの変数に 内容を付け足していく場合に役立つ演算子です。

「*」「*=」演算子での連結

あまり使う機会はないと思いますが、 同じ文字列を繰り返したい場合は「*」演算子、 繰り返した結果を変数に代入したい場合は「*=」演算子が使えます。

# *演算子
$a = "abc"
Write-Host ($a * 3)  # abcabcabc

# *=演算子
$b = "abc"
$b *= 3
Write-Host $b        # abcabcabc

Joinメソッドでの文字列結合

配列内も文字列を結合したい場合はStringクラスのJoinメソッドを使用します。

書式
[string]::Join(区切り文字, 文字列配列)

Joinメソッドは配列の各要素を指定された区切り文字で結合し、 1つの文字列にします。例えば区切り文字に「-」を指定すると "a-b-c"のように結合し、区切り文字に「""」空文字を指定すると "abc"のように結合します。

$arr = "a", "b", "c"

Write-Host ([string]::Join("", $arr))  # 空文字
Write-Host ([string]::Join("-", $arr)) # ハイフン
Write-Host ([string]::Join(",", $arr)) # カンマ

# 実行結果
abc
a-b-c
a,b,c
PowerShell