UiPath テキスト(文字列)を区切り文字(カンマや改行)で分割(split)する方法

この記事では文字列を分割する様々なケースを紹介します。

手順

基本形は以下の通りです。まず変数を三つ用意します。(変数の名前は任意)

サンプルでは規定値で指定していますが、代入複数代入で設定しても構いません。

変数の名前変数の型用途サンプルの規定値
分割後String[]区切った結果をString配列で格納します。
分割前String分割したいテキストを指定します。"a,b,c,d,e,f"
区切り文字String[]区切り文字をString配列で指定します。
サンプルの規定値では,を区切り文字とします。
他の文字るで区切る場合はここを変更します。
New [String](){","}
変数宣言

String[]は変数の型でArray of [T]を指定し、型の選択でStringを指定します。

String[]は変数の型でArray of [T]を指定し、型の選択でString

そして代入を設置し、以下のように指定します。

項目設定
左辺値(To)分割後
右辺値(From)分割前.Split(区切り文字,0)

※二つ目の引数は空の文字列を要素に格納するか否かの指定です。
 0…格納する。
 1…格納しない。
代入の設定

今回のサンプルの規定値では"a,b,c,d,e,f"を,で分割し以下のような配列として格納されます。

インデックス内容
0a
1b
2c
3d
4e
5f

後続で内容を取得するには以下のように指定します。

分割後(インデックス)

三つ目の要素のcを取り出すには以下のようにします。

分割後(2)

繰り返し(コレクションの各要素)を利用すれば区切った結果の全てを取得可能です。

コレクションに分割後を指定すると本体の処理がa~fまで繰り返され、

itemに個々の要素が格納されます。要素を変更するとこの名前も変更可能です。

繰り返し(コレクションの各要素)を利用

タブ文字(TAB文字、TSV)

タブ文字の場合は vbTab で指定します。区切り文字に以下のようにします。

New [String](){vbTab}

改行

改行で分割する場合は区切り文字に以下のように指定します。

どこ改行コードかで指定のしかたが変わります。

改行コード設定
キャリッジ リターン(CR)とライン フィード(LF)New [String](){vbCrLf}
ライン フィード(LF)New [String](){vbLf}
キャリッジ リターン(CR)New [String](){vbCr}

どの改行コードが来るかは分からない場合は区切る前にライン フィード(LF)に統一します。

その場合、区切り文字はライン フィード(LF)に設定します。

New [String](){vbCr}

そして代入の右辺値(From)には以下のように設定します。

分割前.Replace(vbCrLf,vbLf).Replace(vbCr,vbLf).Split(区切り文字,0)

これにより改行コードがライン フィード(LF)に統一されます。

なお意図通りの分割が出来るのであれば、何に変換して分割しても構いません。

(改行コードでなくても可)

2文字以上の区切り文字

区切り文字をcでchar型指定する場合に難しいパターンです。

String配列を使う方法だと単純に区切り文字として2文字以上の文字を指定可能です。

"a||b||c||d||e||f"を"||"で分割したい場合は区切り文字を以下のように指定します。

New [String](){"||"}

複数(2種類以上)の区切り文字

区切り文字が複数ある場合はString配列に区切り文字を複数指定します。

"a,b_c,d_e,f"を","と"_"で分割したい場合は区切り文字に以下のように指定します。

New [String](){"_",","}

結果は以下のようなString配列になります。

インデックス内容
0a
1b
2c
3d
4e
5f

同じ配列にするのではなく"_"で分割してから、","で分割したい場合は

まず"_"で分割し、繰り返し(コレクションの各要素)の中で更に","で分割します。

関連記事