複数の変数を含む文字列をいい感じに出力する

.NET関数を使用する方法


String.Format関数

String.Format関数は非常に多くの使い道がありますが、最もベーシックな「複数の変数を含む文字列をいい感じに出力する」をご紹介します。

複数の変数を含む文字列をいい感じに出力する

まずはString.Formatを使わないパターンを見てみましょう。
例えば、以下のような変数があり、これらをログに書き混むために文字列にしたいとします。

変数名 説明
orderNo string 注文番号 A202008221500
orderName string 注文名称 水で落とせるクレヨン24色
orderDate datetime 注文日 2020/08/22
orderCompany string 注文企業名 逆引きUiPath

普通にやるとこんな感じでしょうか。(resultはstring型の変数です)

result = "注文番号:" & orderNo.ToString & ", 注文名称:" & orderName &
 ", 注文日:" & orderDate.ToString("yyyy/MM/dd") & ", 注文企業名:" & orderCompany

Console.WriteLine(result)

結果はこうなります。

注文番号:A202008221500, 注文名称:水で落とせるクレヨン24色, 注文日:2020/08/22, 注文企業名:逆引きUiPath

別に間違っているわけではないですが、固定文字と変数を組み合わせて使うと、"(ダブルクォーテーション)や&がいっぱい必要で、見ずらいですよね。 これをString.Formatを使うとこんな感じにできます。

パラメータ 説明
戻り値 string 結果文字列
第一引数 string 書式指定文字列
第二引数以降 任意 変数などのオブジェクト
result = String.Format("注文番号:{0}, 注文名称:{1}, 注文日:{2}, 注文企業名:{3}", 
orderNo, orderName, orderDate.ToString("yyyy/MM/dd"),  orderCompany)

Console.WriteLine(result)

結果は先ほど同様こうなります。

注文番号:A202008221500, 注文名称:水で落とせるクレヨン24色, 注文日:2020/08/22, 注文企業名:逆引きUiPath

分解してみてみましょう。

第一引数

"注文番号:{0}, 注文名称:{1}, 注文日:{2}, 注文企業名:{3}"

第一引数(書式指定文字列)には出力したい文字列の全文を記載します。その際、変数を指定して置き換えたい箇所を{0}のような形で記載します。置き換えたい箇所が複数ある場合は、{1},{2}のように、0始まりの連番を指定します。

第二引数以降

orderNo, orderName, orderDate.ToString("yyyy/MM/dd"), orderCompany

第二引数以降には第一引数で指定した{0}~{n}に置き換える変数などの値を指定します。今回、第一引数では{0},{1},{2},{3}と4つの置き換えを指定しているため、第二引数以降、4つの変数が順番に指定されていますね。

見比べてみると、String.Formatのほうが見通しはいいかなと個人的には思います。良ければ使ってみてください。

'普通に書いた場合
result = "注文番号:" & orderNo.ToString & ", 注文名称:" & orderName &
 ", 注文日:" & orderDate.ToString("yyyy/MM/dd") & ", 注文企業名:" & orderCompany

'String.Formatを使った場合
result = String.Format("注文番号:{0}, 注文名称:{1}, 注文日:{2}, 注文企業名:{3}", 
orderNo, orderName, orderDate.ToString("yyyy/MM/dd"),  orderCompany)

UiPathにおける使用方法

主に[代入 (Assign)]アクティビティで使用します。

[代入 (Assign)]アクティビティを使ったパターン

結果がstring型で返ってくるため、string型の変数を作成し、代入式の左辺に設定します。
右辺には、以下のようにString.Format変数を私用した出力文字列の指定をします。

String.Format("注文番号:{0}, 注文名称:{1}, 注文日:{2}, 注文企業名:{3}", 
orderNo, orderName, orderDate.ToString("yyyy/MM/dd"),  orderCompany)

以上です。慣れると絶対こっちのほうが見やすく使いやすくなってきますので是非お試しください。
String.Format関数はこのほかにも金額のカンマ区切りや、小数点桁数、日付のフォーマット他いろんな機能がありますのでまた紹介したいと思います。