C#.NET文字列比較で記号を無視する方法
1077 ワード
たとえば、次の2つの文字列があります.
どの従来の方法を使用しても、彼らの比較結果は0ではないに違いありません.彼らの長さが等しくなくても、文字間の記号が等しくなくても等しくはありません.
文字列比較で記号を無視するにはどうすればいいですか?実際にはIgnoreSymbols列挙オプションは、この要件を満たすことができます.CultureInfoのCompareInfoを使用し、2つの文字列をCompareInfoのCompareメソッドで比較します(ここではCompareOptions列挙を指定できます).
コード:
出力:
後はCompareOptionsを使用する.IgnoreSymbolsのメソッドは0を返します.
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を返します.