UiPath 動かしながら文字列操作を理解する②

# はじめに
引き続き、[UiPathアカデミー](https://www.uipath.com/ja/rpa/academy)で学習した**文字列操作**を紹介する。
前回は**ToStringメソッド**と**Containsメソッド**について触れた。

https://qiita.com/eri_a/items/61fadf21e92d61ae630a

今回は下記の使用方法をまとめた。
- Splitメソッド
- String.Format メソッド
- GenericValue 型変数


## Splitメソッド
指定の文字列でテキストを分割し、配列に格納する。
```
Split("文字列","区切り文字(1文字)" )
```
### 使用例①：テキスト内の"★"で文字列を区切る
`"いちご★りんご★ばなな★みかん"`を "★"で区切り、配列に格納する。
配列から 「いちご」 を取り出して表示させる。

①文字列型の変数「文字列」を定義する。
規定値に `"いちご★りんご★ばなな★みかん"` と入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/feac22a2-b778-3702-fb57-fc1c5c6811cb.png)
②メッセージボックスを設定する。
テキストボックスに `split(文字列, "★")(0)` と入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/9f8e9d9a-dbe6-b31f-3a3a-0df6919d777c.png)
③実行すると「いちご」が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/1c97c8e7-7471-3684-df11-b52f4d0cc505.png)
**＜配列の中身は以下＞**
フルーツ(0) ： "いちご"
フルーツ(1) ： "りんご"
フルーツ(2) ： "ばなな"
フルーツ(3) ： "みかん"

上記の中身を1つずつ順番に表示させたい場合は、
 **[「コレクション（コレクションの各要素）」アクティビティ](https://docs.uipath.com/studio/lang-ja/docs/the-for-each-activity)** を使用するが、
ここでは説明を割愛する。
### 使用例②：ToCharArray メソッドと組み合わせる
区切り文字が複数ある場合は、ToCharArray メソッドを使う。
```
String.Split("区切り文字".ToCharArray)
```
今回は以下のテキストから、「チーズケーキ」　のみを取り出して表示する。
`"私が好きなケーキは、チーズケーキです。"`

①以下の変数を定義する
|名前|変数の型|規定値|
|:---|:---|:--|
|文字列|String|"私が好きなケーキは、チーズケーキです。"|
|配列|String[]|なし|

②「代入」アクティビティを配置する。
左辺： `文字列`
右辺： `配列.Split("、で".ToCharArray)` 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/33299a2e-1ab4-c406-9c8f-610a610fbbb1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/bd80450a-cbbf-f4ab-97ff-f5a01db1fe41.png)
③メッセージボックスを設定する。
テキストボックスに`配列(1)`と入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/68ee01f4-baa8-0fb1-ef8b-7644884c203c.png)
④実行すると、「チーズケーキ」のみが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/153e621b-70ae-183b-e077-eaa37572b705.png)
**＜配列の中身は以下＞**
配列(0) ： "私が好きなケーキは"
配列(1) ： "チーズケーキ"
配列(2) ： "す。"
## String.Format メソッド
文字列と異なるデータ型を連結したい場合、
String.Format メソッドを使用すると、一括で文字列型に変換できる。
### 使用例：文字列型と日付型変数を連結する
以下のテキストをメッセージボックスに表示させる。
`"現在の時刻は、HH時mm分(現在時刻)です。おやすみなさい"`

①文字列型の変数「あいさつ」を定義する。
　規定値に`"おやすみなさい"`と入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/16d0482c-2b4d-7a19-2211-74d39dab36d9.png)
②メッセージボックスを配置し、以下を入力する。
`String.Format("現在の時刻は、{0:HH時mm分}です。{1}",Now,あいさつ)`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/34833118-8317-0ce2-339d-5196815ab4f0.png)

③実行すると、現在の時刻と変数「あいさつ」の値が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/9f9cbee1-0cba-d2fe-4e92-515ba1ba42c0.png)
## [GenericValue 型変数](https://docs.uipath.com/studio/lang-ja/docs/genericvalue-variables#section-example-of-using-a-generic-value-variable)
様々な種類のデータが格納できる、UiPath独自の変数の型。
主に下記のデータを格納可能で、目的に応じて自動で型を変換してくれる。
- テキスト
- 数値
- 日付
- 配列

GenericValue型を使用すれば、型を意識せず扱うことができるが、
意図しないエラーを出力しないよう、十分に注意して使用すること。
### 使用例：文字列と数値を連結する
[前回も記載したように、](https://qiita.com/eri_a/items/61fadf21e92d61ae630a#tostring%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89)文字列型と異なるデータ型の変数を連結する際は、
文字列型へ変換(.ToString)する必要があるが、**GenericValue型を使用する場合は不要**となる。

①数値型の変数「数値」を定義する。
規定値に`"100"`を入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/c214f7b5-1988-7e6d-84df-0e0694b4dcb2.png)
②メッセージボックスを配置する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/7958fb26-6788-324c-625d-24f427fdc94a.png)
③テキストボックスに以下を入力する。
`"テストの点数は" + 数値 + "点でした。"`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/562401de-6816-f7b1-9722-5973e5f85cd8.png)
⑤実行結果はこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/7b3ca995-928b-24b2-0a37-fbb68dbe9e27.png)

## （補足）型の参照について
変数を定義する際、デフォルトでGenericValue型を選択できないため、
下記の手順で設定する。

①変数パネルの「変数の型」プルダウンをクリックする
②「型の参照...」をクリックする
③「型の名前」に`GenericValue`と入力する
④UiPath Coreの「GenericValue」を選択して「OK」をクリックする
![https://i.gyazo.com/51fe9164566c3e1e9b06c8373dbfbc44.png](https://i.gyazo.com/51fe9164566c3e1e9b06c8373dbfbc44.png)
変数の型に`GenericValue`と表示される
![https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/07fd595e-baea-e2a0-9ab8-73bdb0822a20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602975/07fd595e-baea-e2a0-9ab8-73bdb0822a20.png)
# 感想
書き始めは、SplitとToCharArrayメソッドを組み合わせて
使う方法がなかなか想像できなかった😭
Splitメソッドで複数の区切り文字を指定した時、エラーになったので
そこでやっと、こういう時にToCharArrayを使えばいいんだと分かった。
また、Generic型変数は、実際の開発ではまだ使ったことが無いが、
後で型が分からなくなりそうなので、なるべく型を宣言するようにしたい。
# 参考資料
- [UiPathアカデミー](https://www.uipath.com/ja/rpa/academy)