文字列中の文字・文字列を検索する方法を説明します。

文字列の検索する方法は、幾つかの方法があります。以下に記載します。

IndexOf・LastIndexOf を使用する方法

String.IndexOf メソッドを使用して、先頭から文字・文字列を検索する

Dim str As String = "ABcDEabcdeあいう"

'先頭から 'あ' を検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOf("あ"c)          '文字検索
又は
Dim inx1 As Integer = str.IndexOf("あ")           '文字列検索
    
'3文字目の後から 'c' を検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOf("c"c, 3)

'1文字目の後から12文字以内で "bc" を検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOf("bc", 1, 12)

 

String.LastIndexOf メソッドを使用して、末尾から文字・文字列を検索する

Dim str As String = "ABcDEabcdeあいう"

' 末尾から 'あ' を検索し、見つかった位置を取得
Dim inx1 As Integer = str.LastIndexOf("あ"c)

'7文字目の後から "c" を検索し、見つかった位置を取得
Dim inx1 As Integer = str.LastIndexOf("c"c, 7)

'9文字目の後から10文字以内(前に数える)で "bc" を検索し、見つかった位置を取得する
Dim inx1 As Integer = str.LastIndexOf("bc", 9, 10)

 

IndexOf・LastIndexOf で大文字小文字を区別しないで検索する

StringComparison列挙体にて、カルチャを使用して文字列を比較するようにします。

Dim str As String = "ABcDEabcdeあいう"

'先頭からEaを検索し、見つかった位置を取得する
Dim inx1 As Integer = str.IndexOf("EA", StringComparison.OrdinalIgnoreCase)

'末尾からEaを検索し、見つかった位置を取得する
Dim inx2 As Integer = str.LastIndexOf("EA", StringComparison.OrdinalIgnoreCase)

 

IndexOfAny・LastIndexOfAny を使用する方法

IndexOfAny・LastIndexOfAnyは、Char型の配列内に存在する文字のいずれかが、見つかった最初の位置を戻します。

String.IndexOfAny メソッドを使用して、先頭からいくつかの文字検索する

Dim str As String = "ABCDEABCDE12345"
Dim shChar As Char() = {"B"c, "C"c, "D"c}

'先頭から配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOfAny(shChar)

'3文字目の後から配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOfAny(shChar, 3)

'1文字目の後からから12文字中で配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.IndexOfAny(shChar, 1, 12)

 

String.LastIndexOfAny メソッドを使用して、末尾からいくつかの文字を検索する

Dim str As String = "ABCDEABCDE12345"
Dim shChar As Char() = {"B"c, "C"c, "D"c}

'末尾から配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.LastIndexOfAny(shChar)

'7文字目の後から配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.LastIndexOfAny(shChar, 7)

'9文字目の後から10文字以内(前に数える)で配列中(shChar)のいずれかを検索し、見つかった位置を取得
Dim inx1 As Integer = str.LastIndexOfAny(shChar, 9, 10)

 

CompareInfo.IndexOf メソッドを使用する方法

CompareInfoクラスのIndexOf・LastIndexOf メソッドを使えば、大文字小文字、全角と半角、ひらがなとカタカナ、など区別しない比較を行うことができます。

Dim str As String = "ABcDEabcdeあいうアイウ"

Dim ci As System.Globalization.CompareInfo = System.Globalization.CultureInfo.CurrentCulture.CompareInfo

'ひらがなとカタカナを区別しない
Dim inx1 As Integer = ci.IndexOf(str, "アイ", System.Globalization.CompareOptions.IgnoreKanaType)

'半角と全角を区別しない
Dim inx2 As Integer = ci.IndexOf(str, "アイ", System.Globalization.CompareOptions.IgnoreWidth)

 

StartsWith・EndsWithにて文字列の先頭・末尾の文字列サーチ

文字列の先頭や末尾に指定文字列があるか調べるだけならば、String.StartsWithメソッド・String.EndsWithメソッドを使うと簡単に比較出来ます。

Dim str As String = "ABcDEabcdeあいうアイウ"

'先頭文字列サーチ
Dim bc1 As Boolean = str.StartsWith("AB")

'末尾文字のサーチ
Dim bc2 As Boolean = str.EndsWith("ウ")

※ IndexOf・ LastIndexOf・ IndexOfAny・ LastIndexOfAnyは開始位置は0から数ます。また検索で見つからなかった場合は-1を返します。

※文字列検索には、ほかに正規表現でも出来ます。