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