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](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/10/image-42.png)
そして代入を設置し、以下のように指定します。
項目 | 設定 |
---|---|
左辺値(To) | 分割後 |
右辺値(From) | 分割前.Split(区切り文字,0) ※二つ目の引数は空の文字列を要素に格納するか否かの指定です。 0…格納する。 1…格納しない。 |

今回のサンプルの規定値では"a,b,c,d,e,f"を,で分割し以下のような配列として格納されます。
インデックス | 内容 |
---|---|
0 | a |
1 | b |
2 | c |
3 | d |
4 | e |
5 | f |
後続で内容を取得するには以下のように指定します。
分割後(インデックス)
三つ目の要素の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配列になります。
インデックス | 内容 |
---|---|
0 | a |
1 | b |
2 | c |
3 | d |
4 | e |
5 | f |
同じ配列にするのではなく"_"で分割してから、","で分割したい場合は
まず"_"で分割し、繰り返し(コレクションの各要素)の中で更に","で分割します。