鈴鹿の住処

■UiPath Tips■

更新日:  作成日:

文字列を検索する

■はじめに

UiPath Studio で VB.Net のメソッドや関数を使って、文字列が何文字目にあるかを検索する方法を紹介します。

IndexOf メソッドや、InStr 関数で文字列を検索して、見つかった位置を返すことできます。

IndexOf メソッドは、 0 ベースのインデックスで検索結果を返し、文字列が見つからない場合には「-1」を返します。
文字列の末尾から検索する場合には、 LastIndexOf メソッドを使います。

InStr 関数は、 1 ベースのインデックスで検索結果を返し、文字列が見つからない場合には「0」を返します。
文字列の末尾から検索する場合には、 InStrRev 関数を使います。

VB.Net のメソッドや関数は、代入や条件分岐のアクティビティなどの VB の式を入力する欄で使用することができます。

メソッド、関数の使い方画像

■メソッド、関数の引数と戻り値

検索元.IndexOf(検索文字, 開始位置, 文字数, 比較種類)

InStr(開始位置, 検索元, 検索文字, 比較種類)
検索元の先頭から検索文字を検索して見つかった位置を返します。

検索元.LastIndexOf(検索文字, 開始位置, 文字数, 比較種類)

InStrRev(検索元, 検索文字, 開始位置, 比較種類)
検索元の末尾から検索文字を検索して見つかった位置を返します。

検索する開始位置を数字で指定できます。
開始位置から何文字まで検索を行うかを文字数で指定できます。
大文字、小文字などを区別するかを比較種類で指定できます。

引数「検索元」 ・・・検索される文字列を指定します。
引数「検索文字」・・・検索する文字列を指定します。
引数「開始位置」・・・何文字目から検索を開始するかを指定します。省略可
引数「文字数」 ・・・何文字まで検索を行うかを指定します。省略可
引数「比較種類」・・・大文字、小文字などを区別するかを指定します。省略可
戻り値の型・・・数値型(Int32)

引数「比較種類」:IndexOf メソッド
説明
StringComparison.Ordinal 「小文字と大文字」を区別します。(既定値)
StringComparison.OrdinalIgnoreCase 区別しません
引数「比較種類」:InStr 関数
説明
vbBinaryCompare 「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別します。(既定値)
vbTextCompare 区別しません

■解説

引数「検索文字」が「""(空文字)」であれば、引数「開始位置」を返します。

引数「比較種類」を省略すると、大文字、小文字などを区別されて検索されます。

IndexOf メソッド

引数「検索文字」が引数「検索元」に無い場合は、「-1」を返します。
引数「検索文字」が1文字目に見つかった時は、「0」を返します。

引数「開始位置」を省略すると、1文字目から検索が行われます。
省略した場合は、既定値の「0」となります。

引数「開始位置」が引数「検索元」の文字数を超える場合には、 ArgumentOutOfRangeException のエラーが返ってきます。

引数「文字数」を省略すると、引数「開始位置」以降全ての引数「検索元」で検索が行われます。

引数「文字数」を指定する時には、引数「開始位置」の指定が必須となります。

引数「比較種類」を指定すると、「大文字と小文字」のみを区別せずに検索することができます。
「半角と全角」、「ひらがなとカタカナ」を区別せずに検索するには、「StrConv 関数」で検索する前に変換することで、区別せずに検索することができます。

文字列の末尾から検索する場合には、 LastIndexOf メソッドを使います。

InStr 関数

引数「検索文字」が引数「検索元」に無い場合は、「0」を返します。
引数「検索文字」が1文字目に見つかった時は、「1」を返します。

引数「開始位置」を省略すると、1文字目から検索が行われます。
省略した場合は、既定値の「1」となります。
InStrRev 関数では、省略した場合の既定値は「-1」となります。

引数「開始位置」が引数「検索元」の文字数を超える場合には、「0」が返ってきます。

引数「比較種類」を指定すると、「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別せずに検索することができます。

文字列の末尾から検索する場合には、 InStrRev 関数を使います。

InStrRev 関数では引数「比較種類」を指定する時には、引数「開始位置」の指定が必須となります。

■使用例

文字列を検索する

IndexOf メソッド等の使用例を紹介します。

            
  変数 i の型は Int32

  i = "UiPath Studio".IndexOf("1")   -1
  i = "UiPath Studio".IndexOf("i")    1
  i = "UiPath Studio".IndexOf("u")    9
  i = "UiPath Studio".IndexOf("tu")   8
  i = "UiPath Studio".IndexOf("")     0
  i = "UiPath Studio".IndexOf("U")    0

  i = InStr("UiPath Studio", "1")     0
  i = InStr("UiPath Studio", "i")     2
  i = InStr("UiPath Studio", "u")    10
  i = InStr("UiPath Studio", "tu")    9
  i = InStr("UiPath Studio", "")      1
  i = InStr("UiPath Studio", "U")     1
            
          
開始位置を指定して文字列を検索する

IndexOf メソッド等で開始位置を指定する使用例を紹介します。

            
  変数 i の型は Int32

  i = "UiPath Studio".IndexOf("i", 2)  11
  i = InStr(3, "UiPath Studio", "i")   12

  i = "UiPath Studio".IndexOf("i", 2)   2
  i = InStr(3, "UiPath Studio", "")     3
            
          
文字数を指定して文字列を検索する

IndexOf メソッドで検索する文字数を指定する使用例を紹介します。

            
  変数 i の型は Int32

  i = "UiPath Studio".IndexOf("h", 2, 3)    -1
  i = "UiPath Studio".IndexOf("h", 2, 4)     5

  2文字目から3文字の範囲を検索
  i = "abcde".IndexOf("a", 1, 3)    -1
  i = "abcde".IndexOf("b", 1, 3)     1
  i = "abcde".IndexOf("d", 1, 3)     3
  i = "abcde".IndexOf("e", 1, 3)    -1
            
          
比較種類を指定して文字列を検索する

IndexOf メソッド等で比較種類を指定する使用例を紹介します。

            
  変数 i の型は Int32

・小文字と大文字
  i = "abcABC".IndexOf("A", StringComparison.Ordinal)             3
  i = "abcABC".IndexOf("A", StringComparison.OrdinalIgnoreCase)   0
  i = InStr("abcABC", "A", vbBinaryCompare)   4
  i = InStr("abcABC", "A", vbTextCompare)     1

・半角と全角
  i = InStr("ABCABC", "A", vbBinaryCompare)   4
  i = InStr("ABCABC", "A", vbTextCompare)     1

・ひらがなとカタカナ
  i = InStr("あア", "ア", vbBinaryCompare)   2
  i = InStr("あア", "ア", vbTextCompare)     1
            
          
文字列を末尾から検索する

LastIndexOf メソッド、 InStrRev 関数の使用例を紹介します。

            
  変数 i の型は Int32

  i = "UiPath Studio".LastIndexOf("1")   -1
  i = "UiPath Studio".LastIndexOf("i")   11
  i = "UiPath Studio".LastIndexOf("")    12
  i = "UiPath Studio".LastIndexOf("U")    0

  i = InStrRev("UiPath Studio", "1")      0
  i = InStrRev("UiPath Studio", "i")     12
  i = InStrRev("UiPath Studio", "")      13
  i = InStrRev("UiPath Studio", "U")      1

・開始位置
  i = "UiPath Studio".LastIndexOf("i", 12)  11
  i = "UiPath Studio".LastIndexOf("", 3)     3

  i = InStrRev("UiPath Studio", "i", 13)    12
  i = InStrRev("UiPath Studio", "", 3)       3

・文字数
  4文字目から先頭に向けて、3文字の範囲を検索
  i = "abcde".LastIndexOf("a", 3, 3)    -1
  i = "abcde".LastIndexOf("b", 3, 3)     1
  i = "abcde".LastIndexOf("d", 3, 3)     3
  i = "abcde".LastIndexOf("e", 3, 3)    -1

・比較種類
  i = "abcABC".LastIndexOf("a", StringComparison.Ordinal)             0
  i = "abcABC".LastIndexOf("a", StringComparison.OrdinalIgnoreCase)   3

  i = InStrRev("abcABC", "a", -1, vbBinaryCompare)     1
  i = InStrRev("abcABC", "a", -1, vbTextCompare)       4
  i = InStrRev("ABCABC", "A", -1, vbBinaryCompare)  1
  i = InStrRev("ABCABC", "A", -1, vbTextCompare)    4
  i = InStrRev("あア", "あ", -1, vbBinaryCompare)      1
  i = InStrRev("あア", "あ", -1, vbTextCompare)        2