PowerShellで文字列を結合するコマンドと実行結果

アルグース
質問:PowerShellで文字列を結合したい
PowerShellのスクリプト内で文字列の変数を足しこんで文字列を連結したいです。PowerShellでの文字列連結コードはどのように記述しますか?

概要

PowerShellのスクリプト内で文字列を結合したい場合があります。この記事では、+演算子を用いる方法と-Join演算子を用いる方法での文字列の結合コードを紹介します。

書式

-Join 演算子

2つの文字列を結合する場合には以下の書式を利用します。
-Join ("文字列1",  "文字列2")

文字列は複数与えることができます。
-Join ("文字列1",  "文字列2", ... "文字列n")

文字列には変数を与えることもできます。
また、リスト変数を与えた場合は、リストの各要素を結合します。

区切り文字を追加する場合

文字列結合の際に文字列と文字列の間に区切り文字を追加する場合は、次の書式が利用できます。
"文字列1",  "文字列2", ... "文字列n" -Join "区切り文字"

+ 演算子

"文字列1" + "文字列2"

文字列には変数を与えることもできます。

同一の変数に文字列を足しこむ

同一の変数に文字列を足しこむ場合には以下の書式が利用できます。
文字列変数1 += 文字列変数2

上記の記述は下記の記述と同様です。
文字列変数1 = 文字列変数1 + 文字列変数2

例1: -Join演算子を利用したサンプル

コード

下記のPowerShellスクリプトを作成します。
StringJoinJoin.ps1
$string1 = "ペンギン"
$string2 = "くじら"
$string3 = "White Bear"

$joinstr1 = -Join ($string1, $string2)
Write-Output $joinstr1

$joinstr2 = -Join ($string1, $string2, $string3)
Write-Output $joinstr2

$joinstr2 = $string1, $string2, $string3 -Join "と"
Write-Output $joinstr2

解説

-Join演算子で2つの文字列を結合するコードです。
$joinstr1 = -Join ($string1, $string2)
Write-Output $joinstr1

-Join演算子で3つの文字列を結合するコードです。
$joinstr2 = -Join ($string1, $string2, $string3)
Write-Output $joinstr2

区切り文字を使用して3つの文字列を結合するコードです。文字列の間に「と」の文字を追加します。
$joinstr2 = $string1, $string2, $string3 -Join "と"
Write-Output $joinstr2

実行結果

スクリプトを実行します。結果が表示されます。文字列が結合されていることが確認できます。 区切り文字の結合も正しく実行されています。
ペンギンくじら
ペンギンくじらWhite Bear
ペンギンとくじらとWhite Bear
PowerShellで文字列を結合するコマンドと実行結果:画像1

例2: +演算子を利用したサンプル

コード

下記のPowerShellスクリプトを作成します。
StringJoin.ps1
$string1 = "ペンギン"
$string2 = "くじら"
$string3 = "White Bear"

$joinstr1 = $string1 + $string2
Write-Output $joinstr1

$joinstr2 = $string1 + $string2 + $string3
Write-Output $joinstr2

$joinstr3 = $string1
$joinstr3 += $string2
$joinstr3 += $string3
Write-Output $joinstr3 

解説

下記のコードは2つの文字列変数の結合結果を画面に表示します。
$joinstr1 = $string1 + $string2
Write-Output $joinstr1

下記のコードは3つの文字列変数の結合結果を画面に表示します。
$joinstr2 = $string1 + $string2 + $string3
Write-Output $joinstr2

こちらのコードは文字列変数に足しこんでいくコードです。先の3つの文字列変数の結合結果と同じになります。
$joinstr3 = $string1
$joinstr3 += $string2
$joinstr3 += $string3
Write-Output $joinstr3 

実行結果

スクリプトを実行します。結果が表示されます。文字列が結合されていることが確認できます。
ペンギンくじら
ペンギンくじらWhite Bear
ペンギンくじらWhite Bear
PowerShellで文字列を結合するコマンドと実行結果:画像2

例3: リスト(配列)を結合するサンプル

コード

下記のPowerShellスクリプトを作成します。
StringJoinList.ps1
$string1 = "ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ"
$string2 = "あるぱかカステラ", "しまうまバウムクーヘン", "かんがるータルト", "しろさい大福"

$joinstr1 = -Join $string1
Write-Output $joinstr1

$joinstr2 = $string2 -Join ":"
Write-Output $joinstr2

解説

リストの各要素の文字列を結合します。
$joinstr1 = -Join $string1
Write-Output $joinstr1
リストの各要素の文字列を結合します。各要素を":"で区切り結合します。
$joinstr2 = $string2 -Join ":"
Write-Output $joinstr2

実行結果

スクリプトを実行します。結果が表示されます。文字列が結合されていることが確認できます。
ぺんぎんクッキーらくだキャラメルしろくまアイスかるがもサブレ
あるぱかカステラ:しまうまバウムクーヘン:かんがるータルトしろさい大福
PowerShellで文字列を結合するコマンドと実行結果:画像3

補足
$string1 $string2 が配列(リスト)の場合、以下の書式では2つの配列の要素の値が出力される動作にはなりません。 先に配列を結合する必要があります。配列の結合についてはこちらの記事を参照してください。
$joinstr =  -Join ($string1, $string2)
$joinstr =  $string1, $string2 -Join "-"
PowerShellで文字列の結合処理を実装できました。

A.W.S (Another World Story)

PowerShellで文字列を結合するコマンドと実行結果:画像4
薄紫の夕焼けが魔導世界アーカシアの都アルセンの尖塔を染める頃、王立図書塔の最上階では、転生者ハルトがもどかしげに羊皮紙を丸めていた。
部屋の中央には、水晶ランプに照らされた大机。その向かいで見習い魔導士リアが杖を抱え、膨らんだ好奇心を隠しきれずにいる。

「君の“パワーシェル”とやら――本当に魔術なのかしら?」
「むしろ魔法より便利さ。今日は“言霊の束ね方”を見せるよ。つまり文字列の結合だ」

ハルトは杖代わりの鉄製ロッドを掲げ、机の上に小さな青いコンソール・オーブを出現させた。漆黒の球体に、淡い光文字が浮かび上がる。
powershell PS> $a = "炎"
PS> $b = "雷"
PS> $a + $b  
オーブが震え、「炎雷」という二文字が赤金に輝いて宙に走った。リアは目を瞬かせる。
「“+”で繋げるだけ……呪文としては拍子抜けね」
「けれど速い。素材が二つなら、これが一番単純さ」

ハルトは羊皮紙をめくり、三色の宝石を並べるように新たな言霊を敷く。
powershell PS> $elements = "火","水","風" 
PS> $spell = $elements -join ", "
PS> $spell  
オーブの中で炎、水流、疾風が渦を巻き、やがて「火, 水, 風」という光のリボンへと整列した。まるで属性の精霊たちが手を取り合ったかのようだ。
「配列を“‐join”で束ねると、好きな区切り符を挟める。逢わせる媒介を決めるのは、調香師の技にも似ているね」
「なるほど……じゃあ、区切りを空にすれば、一つの大呪文になるわけ?」
「その通り。“”, “ ”、何でも自由だ」

リアは胸元に抱えた古い詠唱書をそっと開き、震える指で行をなぞった。
「なら試してみる――《アクア》《インフィニティ》《サージ》!」
三つの蒼いルーンが飛び出し、互いを拒むように弾け散る。
ハルトは苦笑し、再びロッドを構えた。
powershell PS> $runes = "アクア","インフィニティ","サージ" 
PS> ($runes -join "") + "!" 
光が収束し、巨大な水の円環が天井に描かれた。塔を包むような轟きと共に、圧倒的な魔力がリアの杖へ流れ込む。
「すごい……言葉が混ざり、力が増幅した……!」
「言霊は“結合”で真価を発揮する。バラバラの呪文も、一つに束ねれば物語になるんだ」

感嘆に浸るリア。しかし次の瞬間、塔の外壁を揺らす爆音が轟いた。水の円環が膨張し、まるで海の獣が暴れるように暴走している。
「ま、まずい! 桁外れに強すぎるわ!」
「しまった、“!” まで結合したままだ。制御ルーンを複数形にするの忘れてた!」

ハルトは慌てて再入力する。
powershell PS> ($runes -join "") -replace "サージ","サージ・テイム"  
水の獣はたちまち子犬のように静まり、リアの足下で尻尾ならぬ水流を振って座り込んだ。塔の窓からは、濡れ鼠になった衛兵たちの悲鳴がかすかに聞こえる。
リアが呆れと笑いの混ざった目を向けた。

「これが“うまいオチ”ってやつ?」
「……“‐join”したら、オチまで巻き込む。文字列も魔法も、後始末が肝心って教訓さ」

ぴしゃりと背後で扉が開き、館長が滴るローブを絞りながら吼え立てる。
ハルトはそっとオーブの電源――いや、魔力回路を落とした。

こうしてアーカシアには、新たな格言が生まれた。
――「言霊を繋ぐ時は、結び目よりバケツを先に用意せよ」。
AuthorPortraitAlt
著者
iPentecの企画・分析担当。口が悪いのでなるべく寡黙でありたいと思っている。が、ついついしゃべってしまい、毎回墓穴を掘っている。
作成日: 2013-09-25
改訂日: 2024-05-02
Copyright © 1995–2025 iPentec all rights reserverd.