9

大文字と小文字を区別せず、アクセントを区別しない文字列を比較する方法

さて、これはSQLサーバーで簡単に実行できます

ただし、C# .NET 4.5.1 でも同じことをしたいと思います。

どうすれば最も適切な方法でそれを行うことができますか?

つまり、比較するとこれら 3 つの文字列は等しく返されるはずです

http://www.buroteknik.com/metylan-c387c4b0ft-tarafli-bant-12cm-x25mt_154202.html
http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLI-BANT-12cm-x25mt_154202.html
http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLı-BANT-12cm-x25mt_154202.html

以下のこれら2つは同じSQLサーバーであると言うメソッドが必要です。

 tarafli 
 TARAFLİ 
4

2 に答える 2

15

両方の大文字と小文字のアクセントを無視するには、次のようstring.Compare()に両方のIgnoreNonSpaceANDIgnoreCaseオプションを使用できます。

string s1 = "http://www.buroteknik.com/metylan-c387c4b0ft-tarafli-bant-12cm-x25mt_154202.html";
string s2 = "http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLI-BANT-12cm-x25mt_154202.html";
string s3 = "http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLı-BANT-12cm-x25mt_154202.html";

Console.WriteLine(string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
Console.WriteLine(string.Compare(s2, s3, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));

以下のコメントに応えて、これは と にも機能しtarafliますTARAFLİ

次のコードは、文字列が等しいことを意味する0 を出力します。

string s1 = "tarafli";
string s2 = "TARAFLİ";
Console.WriteLine(string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));

そして、ここではトルコの文化を使用しています (正しい文化は何かを推測しています)。これも 0 を出力します。

string s1 = "tarafli";
string s2 = "TARAFLİ";

var trlocale = CultureInfo.GetCultureInfo("tr-TR");
Console.WriteLine(string.Compare(s1, s2, trlocale, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
于 2015-01-12T13:57:08.147 に答える
4

適切なandstring.Compareを取るオーバーロードで使用できます。CultureInfoCompareOptions

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace |
                                                   CompareOptions.IgnoreCase);

編集:

に関する質問についてCultureInfoは、MSDNから:

この比較では、カルチャ パラメーターを使用して、大文字と小文字の規則や個々の文字のアルファベット順など、カルチャ固有の情報を取得します。たとえば、特定のカルチャでは、特定の文字の組み合わせを 1 つの文字として扱う、大文字と小文字を特定の方法で比較する、または文字の並べ替え順序が前後の文字に依存するように指定できます。

于 2015-01-12T13:56:10.130 に答える