(1) Powershellで文字列をタブ区切りで分割~splitオペレータの活用~
(1-1) 構文
(1-2) サンプルプログラム
(サンプルプログラム#1)ベーシックな「-split」の例
(サンプルプログラム#2)分割結果は配列に自動格納される
(サンプルプログラム#3)分割個数の指定も可能
(1) Powershellで文字列をタブ区切りで分割~splitオペレータの活用~
(1-1) 構文
(構文)
$[Array] = $[Array] -split "\t"
まず[Array]には配列の名前が入ります。自身に対して「-split」オペレータ(=値操作のためのPowershell機能)の引数で指定した「区切り文字」で区切って配列に格納してくれます。
参考までに、Powershellにおける配列を作るには以下のような方法があります。
①変数に「複数の値」をカンマ区切りで与える(値1つの値の場合も「,[値]」で記述可能)
②変数に「@()」を代入して空の配列を初期化
(1-2) サンプルプログラム
Powershellでタブ区切りの文字列を分割するためのサンプルプログラムをいくつかご紹介します。
(サンプルプログラム#1)ベーシックな「-split」の例
タブ区切りでテニス選手(BIG4)の名前を記載した文字列「$arr」に対して「$arr = $arr -split “\t”」で$arrをタブ(\t)で区切るように指示しています。
$arr = 'RogerFeder RafaelNadal NovakDjokovic AndyMurray' echo "[#### Before ####]" $arr #「-split」で分割をします。区切り文字は引数の「\t」(タブ区切り)です $arr = $arr -split "\t" echo "[#### After ####]" $arr
(実行結果)
splitで区切られた結果、4つの文字列の配列に分解されました。
[#### Before ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray [#### After ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray
(図131)
(サンプルプログラム#2)分割結果は配列に自動格納される
分割した結果は配列として格納されているため「[配列名].length」で要素数を取得してforループで各要素にアクセスさせる事もできます。結果的には(サンプルプログラム#1)と同じ結果になります。
$arr = 'RogerFeder RafaelNadal NovakDjokovic AndyMurray' echo "[#### Before ####]" $arr $arr = $arr -split "\t" echo "[#### After2 ####]" for ($i=0;$i -lt $arr.length; $i++) { echo $arr[$i] }
(実行結果)
[#### Before ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray [#### After2 ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray
(図132)
(サンプルプログラム#3)分割個数の指定も可能
「-split [区切り文字] , [分割個数]」と指定する事で、区切り文字で区切った結果作られる「要素数」を任意の数字で指定できます。
例えば次の例では「-split \t , 3」としているため、3つの文字列に分解されます。そうなると、後半のNovakDjokovicとAndyMurrayは分割されずに繋がったままになります。
$arr = 'RogerFeder RafaelNadal NovakDjokovic AndyMurray' echo "[#### Before ####]" $arr $arr = $arr -split "\t", 3 echo "[#### After2 ####]" for ($i=0;$i -lt $arr.length; $i++) { echo $arr[$i] }
(実行結果)
[#### Before ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray [#### After2 ####] RogerFeder RafaelNadal NovakDjokovic AndyMurray
(図133)