UiPath

【UiPath】文字列の操作をサンプル付きで紹介

UiPath Studioの開発で、文字列の操作は必要になることが多いです。

この記事では、文字列の結合、取得、追加、置換、削除、変換、分割、を、サンプル付きで紹介します

※非常に長い記事ですので、目次をタッチ(またはクリック)して、知りたい章へジャンプしてください。

目次
  1. 文字列の結合
  2. 文字列の取得
  3. 文字列の追加
  4. 文字列の置換
  5. 文字列の削除
  6. 文字列を変換
  7. 文字列の分割
  8. まとめ

文字列の結合

文字列を結合する(+)

文字列の結合は、文字と文字の間に+を入れます。

 

String型の変数「str1」と「str2」と”xyzと”えお”の文字列を結合するコード

str1+str2+"xyz"+"えお"

 

・サンプルワークフロー

・実行結果

 

文字列を結合する(Concat)

文字列の結合は、Concat関数を利用しても出来ます。

 

String型の変数「str1」と「str2」と”xyzと”えお”の文字列を結合するコード

String.Concat(str1,str2,"xyz","えお")

 

・サンプルワークフロー

・実行結果

 

文字列の取得

文字列の長さを取得する(Length)

文字列の長さは、Lengthで取得します。

 

String型の変数「str1」の文字の長さを取得するコード

str1.Length

 

・サンプルワークフロー

・実行結果

 

文字列の途中から最後まで抽出する(Substring)

文字列の途中から最後まで抽出する場合は、SubStringを使います。

 

String型の変数「str1」の3文字目(位置は2番目)の文字を取得するコード

str1.String(2)
  • ()内の1つ目の値:対象の位置  ※1文字目の位置は0であることに注意

 

・サンプルワークフロー

・実行結果

ラッコくん
ラッコくん
カッコ内の数値は0が1文字目を指すので、カッコ内が2だと3文字目以降を取得するよ

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Substring(0)  //『abcあいう』 が出力される
str1.Substring(1)  //『bcあいう』 が出力される
str1.Substring(2)  //『cあいう』 が出力される
str1.Substring(3)  //『あいう』 が出力される
str1.Substring(4)  //『いう』 が出力される
str1.Substring(5)  //『う』 が出力される

 

文字列の後ろから抽出する(Substring、Length)

文字列の後ろから抽出する場合は、SubStringとLengthを組み合わせます。

 

String型の変数「str1」の後ろから2文字を取得するコード

str1.Substring(str1.Length-2)
  • ()内の1つ目の値:対象文字列の文字数(Length)から取得したい文字数を引く

 

・サンプルワークフロー

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Substring(str1.Length-1)  //『う』 が出力される 
str1.Substring(str1.Length-2)  //『いう』 が出力される 
str1.Substring(str1.Length-3)  //『あいう』 が出力される 
str1.Substring(str1.Length-4)  //『cあいう』 が出力される 
str1.Substring(str1.Length-5)  //『bcあいう』 が出力される

 

文字列の一部を抽出する(Substring)

文字列の一部を抽出する場合も、SubStringを使います。

 

String型の変数「str1」の2文字目(位置は1)から3文字を取得するコード

str1.String(1,3)
  • ()内の1つ目の値:対象の位置  ※1文字目の位置は0であることに注意
  • ()内の2つ目の値:取得する文字数

 

・サンプルワークフロー

・実行結果

ペンギンさん
ペンギンさん
カッコ内の数値は0が1文字目を指すので、String(1,3)は、2文字目から3文字を取得するんだね

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Substring(1,2)  //『bc』 が出力される 
str1.Substring(2,3)  //『cあい』 が出力される 
str1.Substring(2,4)  //『cあいう』 が出力される 
str1.Substring(3,2)  //『あい』 が出力される 
str1.Substring(4,2)  //『いう』 が出力される

 

 

指定文字列を前から検索して位置を取得する(IndexOf)

指定文字列を前から検索して位置を取得するのは、IndexOfを使用します。

 

String型の変数「str1」の”cd”の文字列の最初の位置を取得するコード

str1.IndexOf("cd")
  • ()内の1つ目の値:検索対象の文字列

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcdeあいabcde"
str1.IndexOf("a")   //『0』 が出力される
str1.IndexOf("b")   //『1』 が出力される
str1.IndexOf("c")   //『2』 が出力される
str1.IndexOf("bcd")  //『1』 が出力される
str1.IndexOf("あ")  //『5』 が出力される
str1.IndexOf("い")  //『6』 が出力される
str1.IndexOf("あい") //『5』 が出力される
str1.IndexOf("か")  //『-1』 が出力される
ペンギンさん
ペンギンさん
前から検索して、最初に見つかった位置を出力するんだね
ラッコくん
ラッコくん
検索結果がない場合は、-1が出力されるよ

 

指定文字列を後ろから検索して位置を取得する(LastIndexOf)

指定文字列を後ろから検索して位置を取得するのは、LastIndexOfを使用します。

 

String型の変数「str1」の”abc”の文字列の最後の位置を取得するコード

str1.LastIndexOf("abc")
  • ()内の1つ目の値:検索対象の文字列

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcdeあいabcde"
str1.LastIndexOf("a")  //『7』 が出力される
str1.LastIndexOf("b")  //『8』 が出力される
str1.LastIndexOf("c")  //『9』 が出力される
str1.LastIndexOf("cde") //『9』 が出力される
str1.LastIndexOf("あ")  //『5』 が出力される
str1.LastIndexOf("い")  //『6』 が出力される
str1.LastIndexOf("あい") //『5』 が出力される
str1.LastIndexOf("z")  //『-1』 が出力される
ペンギンさん
ペンギンさん
後ろから検索して、最初に見つかった位置を出力するんだね
ラッコくん
ラッコくん
IndexOfと同じで検索結果がない場合は、-1が出力されるよ

 

文字列の追加

指定した位置へ文字列を追加する(Insert)

指定位置への文字列の追加は、Insertを使用します。

 

String型の変数「str1」の3文字目の次に”@”を追加するコード

str1.Insert(3,"@") 
  • ()内の1つ目の値:追加する位置
  • ()内の2つ目の値:追加する文字列

 

・サンプルワークフロー

 

・実行結果

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Insert(0,"@")  //『@abcあいう』  が出力される。
str1.Insert(1,"@")  //『a@bcあいう』  が出力される。
str1.Insert(2,"@")  //『ab@cあいう』  が出力される。
str1.Insert(3,"@")  //『abc@あいう』  が出力される。
str1.Insert(4,"@")  //『abcあ@いう』  が出力される。
str1.Insert(5,"@")  //『abcあい@う』  が出力される。
str1.Insert(6,"@")  //『abcあいう@』  が出力される。

 

指定桁数になるまで、先頭文字の前に指定文字を追加する(PadLeft)

指定桁数になるまで、先頭文字の前に指定文字を追加するのは、PadLeftを使用します。

 

String型の変数「str1」の桁数が10になるまで先頭に0を追加するコード

str1.PadLeft(10,"0"c)
  • ()内の1つ目の値:桁数
  • ()内の2つ目の値:追加する文字列 ※Char型に変換するため、文字列の後ろにcを追加
ペンギンさん
ペンギンさん
2つ目の値の※の説明がよく分からない場合は、おまじないと思ってcをつけておいてね

 

・サンプルワークフロー

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "1234"
str1.PadLeft(5,"0"c)  //『01234』   が出力される
str1.PadLeft(6,"0"c)  //『001234』   が出力される
str1.PadLeft(7,"0"c)  //『0001234』   が出力される
str1.PadLeft(7,"@"c)  //『@@@1234』   が出力される

 

指定桁数になるまで、末尾文字の後に指定文字を追加する(PadRight)

指定桁数になるまで、先頭文字の前に指定文字を追加するのは、PadRightを使用します。

 

String型の変数「str1」の桁数が10になるまで後ろに0を追加するコード

str1.PadRight(10,"0"c)
  • ()内の1つ目の値:桁数
  • ()内の2つ目の値:追加する文字列 ※Char型に変換するため、文字列の後ろにcを追加

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "1234"
str1.PadRight(5,"0"c)  //『12340』   が出力される
str1.PadRight(6,"0"c)  //『123400』   が出力される
str1.PadRight(7,"0"c)  //『1234000』   が出力される
str1.PadRight(7,"@"c)  //『1234@@@』   が出力される

 

改行を追加する(Environment.NewLine、vbCrLf )

UiPathで文字列に改行を追加するのは、Environment.NewLine か vbCrLf を使用します。

 

文字列abとcdの間に改行を追加するコード

"ab"+Environment.NewLine +"cd"
ペンギンさん
ペンギンさん
Environment.NewLineは、OS環境で定義されている改行文字列を取得する関数です。

もしくは以下のコードでも同じ結果を得られます。

"ab"+vbCrLf +"cd"
ラッコくん
ラッコくん
vbCrLfは、Windowsの改行文字列\r\nを表すコードだよ。

 

・サンプルワークフロー1

※一つ目のアクティビティの式は、
str1 = “ab”+Environment.NewLine +”cd”

・実行結果1

 

・サンプルワークフロー2

・実行結果2

 

文字列の置換

指定文字列を別の文字列へ置き換える(Replace)

指定文字列を別の文字列へ置き換えるのは、Replaceを使用します。

String型の変数「str1」内の”bc”を”xyz”へ置換して出力するコード

str1.Replace("bc","xyz")
  • ()内の1つ目の値:置換対象の文字列
  • ()内の2つ目の値:置換後の文字列

 

・サンプルワークフロー

 

・実行結果

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいうabcde"
str1.Replace("a","1")   //『1bcあいう1bcde』が出力される
str1.Replace("a","123")  //『123bcあいう123bcde』が出力される
str1.Replace("ab","1")   //『1cあいう1cde』が出力される
str1.Replace("bc","xyz")  //『axyzあいうaxyzde』が出力される
str1.Replace("あ","9")   //『abc9いうabcde』が出力される
str1.Replace("あい","わ")  //『abcわうabcde』が出力される
str1.Replace("あいう","かきくけこ")  //『abcかきくけこabcde』が出力される

 

文字列の削除

文字列を左から指定文字数を削除する(Substring)

文字列を左から指定文字数を削除するのは、Substringを使用します。

 

String型の変数「str1」の左から2文字削除するコード

str1.Substring(2) 
  • ()内の1つ目の値:削除したい文字数

 

・サンプルワークフロー

 

・実行結果

ペンギンさん
ペンギンさん
コードは、「文字列の途中から最後まで取得する(Substring)」と同じだね

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Substring(0)  //『abcあいう』 が出力される
str1.Substring(1)  //『bcあいう』 が出力される
str1.Substring(2)  //『cあいう』 が出力される
str1.Substring(3)  //『あいう』 が出力される
str1.Substring(4)  //『いう』 が出力される
str1.Substring(5)  //『う』 が出力される

 

文字列を右から指定文字数を削除する(Substring、Length)

文字列を右から指定文字数の削除は、SubstringとLengthを使用します。 Substringで先頭から削除する文字の一つ前まで取得することで、文字の削除を行います。

 

String型の変数「str1」の右から2文字削除するコード

str1.Substring(0,str1.Length-2) 
  • ()内の1つ目の値:0  ※先頭文字の位置である 0 を固定
  • ()内の2つ目の値:対象文字列の文字数(Length)から削除したい文字数を引く

 

・サンプルワークフロー

・実行結果

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Substring(0,str1.Length-1)  //『abcあい』 が出力される。
str1.Substring(0,str1.Length-2)  //『abcあ』 が出力される。
str1.Substring(0,str1.Length-3)  //『abc』 が出力される。
str1.Substring(0,str1.Length-4)  //『ab』 が出力される。
str1.Substring(0,str1.Length-5)  //『a』 が出力される。

 

文字列の指定位置以降を削除する(Remove)

文字列の指定位置以降を削除するのは、Removeを使用します。

 

String型の変数「str1」の3文字目以降(位置は2以降)を削除するコード

str1.Remove(2)
  • ()内の1つ目の値:削除対象の指定位置  ※1文字目の位置は、0であることに注意

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Remove(1)  //『a』 が出力される
str1.Remove(2)  //『ab』 が出力される
str1.Remove(3)  //『abc』 が出力される
str1.Remove(4)  //『abcあ』 が出力される
str1.Remove(5)  //『abcあい』 が出力される

 

文字列の指定位置から指定文字数を削除する(Remove)

文字列の指定位置から指定文字数を削除するのも、Removeを使用します。

 

String型の変数「str1」の2文字目(位置は1)から2文字を削除するコード

str1.Remove(1,2)
  • ()内の1つ目の値:削除開始位置  ※1文字目の位置は、0であることに注意
  • ()内の2つ目の値:削除する文字数

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abcあいう"
str1.Remove(1,2)  //『aあいう』 が出力される。
str1.Remove(1,3)  //『aいう』 が出力される。
str1.Remove(1,4)  //『aう』 が出力される。
str1.Remove(1,5)  //『a』 が出力される。
str1.Remove(2,1)  //『abあいう』 が出力される。
str1.Remove(2,2)  //『abいう』 が出力される。
str1.Remove(2,3)  //『abう』 が出力される。
str1.Remove(2,4)  //『ab』 が出力される。
str1.Remove(3,1)  //『abcいう』 が出力される。

 

文字列の前後にある空白スペースを削除する(Trim)

文字列の前後にある空白スペースの削除は、Trimを使用します。

 

String型の変数「str1」の前後の空白スペースを削除するコード

str1.Trim

 

・サンプルワークフロー

・実行結果

※前後の空白スペースが削除されています

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = " abcあいう "
str1.Trim      //『abcあいう』 が出力される
 
str1 = " abcあいう "
str1.Trim      //『abcあいう』が出力される
 
str1 = " ab cあ いう "
str1.Trim      //『ab cあ いう』が出力される
ペンギンさん
ペンギンさん
文字列内の空白スペースは、削除されないことに注意してね

 

文字列の前にある空白スペースを削除する(LTrim)

文字列の前にある空白スペースの削除は、LTrimを使用します。

 

String型の変数「str1」の前の空白スペースを削除するコード

Ltrim(str1)

 

・サンプルワークフロー

・実行結果

※前の空白スペースが削除されています

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = " abcあいう "
LTrim(str1)     //『abcあいう 』 が出力される
 
str1 = " abcあいう "
LTrim(str1)     //『abcあいう 』 が出力される
 
str1 = " ab cあ いう "
LTrim(str1)     //『ab cあ いう 』 が出力される
ペンギンさん
ペンギンさん
Trimと同じで文字列内の空白スペースは、削除されないことに注意してね

 

文字列の後にある空白スペースを削除する(RTrim)

文字列の後にある空白スペースの削除は、RTrimを使用します。

 

String型の変数「str1」の後ろの空白スペースを削除するコード

Rtrim(str1)

 

・サンプルワークフロー

・実行結果

※後の空白スペースが削除されています

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = " abcあいう "
RTrim(str1)     //『 abcあいう』が出力される
 
str1 = " abcあいう "
RTrim(str1)     //『 abcあいう』が出力される
 
str1 = " ab cあ いう "
RTrim(str1)     //『 ab cあ いう』が出力される
ペンギンさん
ペンギンさん
Trimと同じで文字列内の空白スペースは、削除されないことに注意してね

 

文字列から指定文字列を削除する(Replace)

文字列から指定文字列を削除するのは、Replaceを使用します。

指定文字列を「文字列なし」に置換することで、文字列を削除することが出来ます。

 

String型の変数「str1」の”bc”を削除するコード

str1.Replace("bc","")
  • ()内の1つ目の値:削除対象文字列  ※置換対象文字列
  • ()内の2つ目の値:””  ※ 置換後の文字列。”” は文字列なしを意味する。

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』内が実行結果、//より右側が出力結果のコメント。

str1 = "abcあいうabcde"
str1.Replace("a","")  //『bcあいうbcde』 が出力される。
str1.Replace("b","")  //『acあいうacde』 が出力される。
str1.Replace("c","")  //『abあいうabde』 が出力される。
str1.Replace("bc","")  //『aあいうade』 が出力される。
str1.Replace("あ","")  //『abcいうabcde』 が出力される。
str1.Replace("い","")  //『abcあうabcde』 が出力される。
str1.Replace("あい","")  //『abcうabcde』 が出力される。
str1.Replace("d","")  //『abcあいうabce』 が出力される。
str1.Replace("e","")  //『abcあいうabcd』 が出力される。
str1.Replace("cde","")  //『abあいうab』 が出力される。
str1.Replace("z","")  //『abcあいうabcde』 が出力される。
ラッコくん
ラッコくん
削除対象文字列がなかった場合は、元の文字列が出力されるよ

 

文字列から改行を削除する(Replace)

文字列から改行を削除するのは、Replaceを使用します。

改行を表すChr(13)とChr(10)を「文字列なし」に置換することで、改行を削除することができます。

 

String型の変数「str1」の改行を削除するコード

str1.Replace(Chr(13), "").Replace(Chr(10), "")
ラッコくん
ラッコくん
Chr(13)はCRの文字コード、Chr(10)はLFの文字コードを表していて、CRLFで改行を表すよ
ペンギンさん
ペンギンさん
ラッコくんの言っていることが難しいので、機械的に上記のコードで改行を削除してね

 

・サンプルワークフロー

 

・読み込み対象テキストファイル

 

・実行結果

 

文字列を変換

文字列を数値へ変換する(Parse)

文字列を数値(Integer)へ変換するのは、Parseを使用します。

 

String型の変数「str1」を数値(Integer)へ変換するコード

Integer.Parse(str1)

 

・サンプルワークフロー

 

・実行結果

ラッコくん
ラッコくん
最初の実行結果は文字列同士の結合、後の実行結果は数値に変換しての足し算なので、メッセージが変わるよ

 

数値を文字列へ変換する(ToString)

数値(Integer)を文字列へ変換するのは、ToStringを使用します。

 

Int型の変数「int1」を文字列へ変換するコード

int1.ToString

 

・サンプルワークフロー

※int1、int2はInt型の変数

 

・実行結果

ペンギンさん
ペンギンさん
最初の実行結果は数値の足し算、後の実行結果は数値を文字列に変換しての結合なので、メッセージが変わるよ

 

小文字を大文字へ変換する(ToUpper)

小文字を大文字へ変換するのは、ToUpperを使用します。

 

String型の変数「str1」の小文字を大文字へ変換するコード

str1.ToUpper

 

.サンプルワークフロー

 

・実行結果

 

大文字を子文字へ変換する(ToLower)

大文字を小文字へ変換するのは、ToLowerを使用します。

 

String型の変数「str1」の大文字を小文字へ変換するコード

str1.ToLower

 

.サンプルワークフロー

 

・実行結果

 

文字列の分割

文字列を指定文字で分割する(Split)

文字列を指定文字で分割するは、Splitを使用します。

 

String型の変数「str1」の区切り文字”,”の一つ目の文字を取得するコード

split(str1,"-")(0)
  • Split()内の1つ目の値:対象文字列
  • Split()内の2つ目の値:区切る文字列
  • 2つ目の()内の値:区切った文字の位置
ラッコくん
ラッコくん
split関数は、配列型を返すので、二番目の()内で取得対象位置を指定して、文字を出力させているよ
ペンギンさん
ペンギンさん
ラッコくんの言っていることはやや難しいので、下のサンプルを見てイメージをつかんでね

 

・サンプルワークフロー

 

・実行結果

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側が出力結果のコメント

str1 = "abc-123-de"
split(str1,"-")(0)  //『abc』 が出力される
split(str1,"-")(1)  //『123』 が出力される
split(str1,"-")(2)  //『de』 が出力される
 
str1 = "abc/123/de"
split(str1,"/")(0)  //『abc』 が出力される
split(str1,"/")(1)  //『123』 が出力される
split(str1,"/")(2)  //『de』 が出力される 

 

まとめ

  • 今回文字列の操作に使用した関数は、
    +、Concat、Length、Substring、IndexOf、LastIndexOf、Insert、PadLeft、PadRight、Replace、Remove、Trim、LTrim、RTrim、Parse、ToString、ToUpper、ToLower、Split です。
  • 使用頻度が高い関数は、+、Length、Substring、Replace、ToString、Splitです。この関数だけでも使いこなせれば、かなり効率的に開発できますので、是非覚えてください。

 

最後に関連記事を紹介します。

↓文字列に対して、null,空,空白スペースが含まれているか、指定文字列と一致しているか、チェックする方法を解説した記事です。

【UiPath】文字列のチェックをサンプル付きで紹介UiPath Studioの開発で、文字列のチェックや判定が必要になることは多いです。 この記事では、文字列に対して、null,空...

https://penrako.com/uipathstringcheck/(別ウインドウ)

 

↓変数のDateTime型を指定、現在の日時の取得、時間差の計算、月末や月初日の取得、西暦と和暦の変換、Date型のチェック、Date型と文字列型の変換方法について、解説した記事です。

【UiPath】日付や時間の操作をサンプル付きで紹介変数のDateTim型を指定、日時の取得、時間差の計算、DateTime型のチェック、DateTime型と文字列型の変換、指定日付の取得方法をサンプル付きで紹介します。...

https://penrako.com/uipathdate/(別ウインドウ)

 

↓UiPath Studioのアクティビティの使い方、開発時のチップスについては、以下記事にまとめています。

【UiPath】プロセス作成方法やアクティビティの使い方のまとめ記事UiPath Studioでのプロセス作成方法やアクティビティの使い方を体系的に学びたい方向けに、UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを分かりやすく説明します。...

https://penrako.com/uipathstudiosummary/(別ウインドウ)