[ VB.NET / C# ] 文字列の比較 大文字・小文字・半角・全角の区別 ( String.Compare )

Pocket

ここでは、VB.NET と C# において、文字列を大文字・小文字を区別しないで比較する方法と、半角・全角を区別しないで比較するサンプルを掲載しています。

スポンサーリンク

[ 文字列の比較 ] 大文字・小文字を区別したりしなかったり

文字列を大文字と小文字で区別して比較するサンプルと、区別せずに比較するサンプルコードになります。詳細はサンプル中のコメントを参照ください。

VB.NET

    Dim str1 As String = "ABC"
    Dim str2 As String = "abc"

    Dim ret As Integer
    ' 大文字・小文字を区別して比較
    ret = String.Compare(str1, str2)
    If (ret = 0) Then
        Console.WriteLine("大文字・小文字を区別せずに一致")
    End If

    ' 大文字・小文字を区別せずに比較
    ret = String.Compare(str1, str2, True)
    If (ret = 0) Then
        Console.WriteLine("大文字・小文字を区別せずに一致")
    End If

    ' 大文字・小文字を区別せずに比較その2
    ret = String.Compare(str1, str2, StringComparison.CurrentCultureIgnoreCase)
    If (ret = 0) Then
        Console.WriteLine("大文字・小文字を区別せずに一致2")
    End If

C#

    string str1 = "ABC";
    string str2 = "abc";

    int ret;
    // 大文字・小文字を区別して比較
    ret = String.Compare(str1, str2);
    if (ret == 0) {
        Console.WriteLine("大文字・小文字を区別せずに一致");
    }

    // 大文字・小文字を区別せずに比較
    ret = String.Compare(str1, str2, true);
    if (ret == 0) {
        Console.WriteLine("大文字・小文字を区別せずに一致");
    }

    // 大文字・小文字を区別せずに比較その2
    ret = String.Compare(str1, str2, StringComparison.CurrentCultureIgnoreCase);
    if (ret == 0) {
        Console.WriteLine("大文字・小文字を区別せずに一致2");
    }

[ 文字列の比較 ] 半角・全角・平仮名・カタカナを区別しない

半角と全角、ひらがなとカタカナ、大文字と小文字を区別せずに文字列を比較するサンプルコードになります。なお、本サンプルは .NetFramework 3.5 で追加されたメソッドを使用しているので、それ以前の環境では使用できません。

VB.NET

    Dim str1 As String = "ABCあいうカキク"
    Dim str2 As String = "abcアイウカキク"

    Dim ci As New CultureInfo("ja-JP")

    Dim opt As CompareOptions

    ' CompareOptions.IgnoreWidth    : 半角全角無視
    ' CompareOptions.IgnoreKanaType : ひらがな・カタカナ無視
    ' CompareOptions.IgnoreCase     : 大文字・小文字無視
    
    opt = CompareOptions.IgnoreWidth Or CompareOptions.IgnoreKanaType Or CompareOptions.IgnoreCase
    Dim ret As Integer = String.Compare(str1, str2, ci, opt)
    If (ret = 0) Then
        Console.WriteLine("一致") ' 出力される
    End If

C#

    string str1 = "ABCあいうカキク";
    string str2 = "abcアイウカキク";

    CultureInfo ci = new CultureInfo("ja-JP");

    CompareOptions opt;
    opt = CompareOptions.IgnoreWidth |    // 全角・半角無視
          CompareOptions.IgnoreKanaType | // ひらがな、カタカナ無視
          CompareOptions.IgnoreCase;      // 大文字・小文字無視

    int ret = string.Compare(str1, str2, ci, opt);
    if (ret == 0) {
        Console.WriteLine("一致"); // 出力される
    }

ただし、『 あ 』 と 『 ぁ 』 のように日本語の大文字と小文字は異なる文字列として扱われます。また、CompareOptions 列挙体には、空白文字や、句読点を無視するといったメンバも存在しますので、下記の参考リンクで詳細を確認ください。

参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *