VB.NET 文字列をカナ、全角半角、大文字小文字などを区別せずに比較する方法
VB.NET
で文字列をひらがなカタカナ、全角半角、大文字小文字を区別せずに、前方一致や部分一致で検索する方法をまとめて紹介します。
部分一致で検索
例えばあいうえお
という文字列にうえ
という文字列が含まれているかどうか判定したい場合は部分一致で検索します。
部分一致の判定方法は色々ありますが、「全角半角などを区別しない」などの条件を付与するために、以下の方法で行います。(全角半角などの判定オプションは後述します)
Dim ci As Globalization.CompareInfo = Globalization.CultureInfo.CurrentCulture.CompareInfo
'部分一致の判定
If ci.IndexOf("あいうえお", "うえ") <> -1 Then
'「あいうえお」に「うえ」が含まれる
End If
前方一致で検索
例えばあいうえお
という文字列があいう
という文字列で始まっているかどうか判定したい場合は前方一致で検索します。
部分一致と同様に前方一致の判定方法は色々ありますが、「全角半角などを区別しない」などの条件を付与するために、以下の方法で行います。
Dim ci As Globalization.CompareInfo = Globalization.CultureInfo.CurrentCulture.CompareInfo
'部分一致の判定
If ci.IsPrefix("あいうえお", "あいう") Then
'「あいうえお」は「あいう」で始まる
End If
比較オプション
以下のように第3引数にオプションを指定すれば「全角半角を区別しない」などの比較条件を追加できます。
'全角半角を区別しない
If ci.IndexOf("ABC", "ABC", Globalization.CompareOptions.IgnoreWidth) <> -1 Then
End If
よく使うオプションとして、以下があります。
- Globalization.CompareOptions.IgnoreWidth
- 全角半角を区別しない
- Globalization.CompareOptions.IgnoreKanaType
- ひらがなカタカナを区別しない
- Globalization.CompareOptions.IgnoreCase
- 大文字小文字を区別しない
複数の比較オプションを指定する方法
例えば全角半角を区別せず、なおかつ大文字小文字を区別せずに検索したい場合、以下のようにOR
条件でつなげてオプションを複数指定できます。
'全角半角を区別しない
If ci.IndexOf("ABC", "ABC", Globalization.CompareOptions.IgnoreWidth Or Globalization.CompareOptions.IgnoreCase) <> -1 Then
End If