分かりやすく、使いやすく。

文字列を区切り文字で分割して配列にする方法

スポンサーリンク

PowerShell で文字列を区切り文字で分割して配列にするには -split を使用します。区切り文字は引数で指定します。

  1. 文字列を区切り文字で分割して配列にする
  2. 文字列に、区切り文字以外の文字がない場合
  3. 区切り文字に2文字以上指定した場合


文字列を区切り文字で分割して配列にする

サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
$csv_str = 'AAA,BBB,CCC'
 
# カンマで文字列を分割する。(引数で区切り文字を指定)
$ary_str = $csv_str -split ","
 
# 配列の内容をすべて出力する。
for($i=0; $i -lt $ary_str.Length; $i ++){
    Write-Host ('インデックス' + [string]$i + 'の要素の値→' + $ary_str[$i])
} 

上記の実行結果は次の通りです。

インデックス0の要素の値→AAA
インデックス1の要素の値→BBB
インデックス2の要素の値→CCC 

文字列に、区切り文字以外の文字がない場合

対象の文字列に区切り文字以外の文字列がない場合、要素の値は空文字になります。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Write-Host "区切り文字しかない文字列を分割する場合"
 
$csv_str = ',,'
 
# カンマで文字列を分割する。
$ary_str = $csv_str -split ","
 
# 配列の内容をすべて出力する。
for($i=0; $i -lt $ary_str.Length; $i ++){
    Write-Host ('インデックス' + [string]$i + 'の要素の値→' + $ary_str[$i])
}
 
Write-Host "空文字を分割する場合"
 
$csv_str = ''
 
# カンマで文字列を分割する。
$ary_str = $csv_str -split ","
 
# 配列の内容をすべて出力する。
for($i=0; $i -lt $ary_str.Length; $i ++){
    Write-Host ('インデックス' + [string]$i + 'の要素の値→' + $ary_str[$i])
} 

上記の実行結果は次の通りです。

区切り文字しかない文字列を分割する場合
インデックス0の要素の値→
インデックス1の要素の値→
インデックス2の要素の値→
空文字を分割する場合
インデックス0の要素の値→ 

区切り文字に2文字以上指定した場合

区切り文字に2文字以上指定した場合も正常に動作します。サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
# 配列を初期化
$csv_str = 'ABCDEFG-ABCDEFG'
 
# カンマで文字列を分割する。(引数で区切り文字を指定)
$ary_str = $csv_str -split "CDE"
 
# 配列の内容をすべて出力する。
for($i=0; $i -lt $ary_str.Length; $i ++){
    Write-Host ('インデックス' + [string]$i + 'の要素の値→' + $ary_str[$i])
} 

上記の実行結果は次の通りです。

インデックス0の要素の値→AB
インデックス1の要素の値→FG-AB
インデックス2の要素の値→FG 
スポンサーリンク
スポンサーリンク