C#.NET文字列比較で記号を無視する方法

1077 ワード

たとえば、次の2つの文字列があります.
 
  
            var a = "a-b=c12";
            var b = "a.b___c12";

どの従来の方法を使用しても、彼らの比較結果は0ではないに違いありません.彼らの長さが等しくなくても、文字間の記号が等しくなくても等しくはありません.
文字列比較で記号を無視するにはどうすればいいですか?実際にはIgnoreSymbols列挙オプションは、この要件を満たすことができます.CultureInfoのCompareInfoを使用し、2つの文字列をCompareInfoのCompareメソッドで比較します(ここではCompareOptions列挙を指定できます).
コード:
 
  
            var a = "a-bc=12";
            var b = "a.b___c12";

            Console.WriteLine(String.Compare(a, b));

            // InvariantCulture
            Console.WriteLine(CultureInfo.InvariantCulture.CompareInfo.Compare(a, b, CompareOptions.IgnoreSymbols));
            // CultureInfo
            Console.WriteLine(CultureInfo.CurrentCulture.CompareInfo.Compare(a, b, CompareOptions.IgnoreSymbols));

出力:
 
  
1
0
0

後はCompareOptionsを使用する.IgnoreSymbolsのメソッドは0を返します.