文字列中の文字・文字列を検索する方法を説明します。
文字列の検索する方法は、幾つかの方法があります。以下に記載します。
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を返します。
※文字列検索には、ほかに正規表現でも出来ます。