[C#] C#の大文字と小文字を区別しない演算子がありますか?


Answers

文字の大文字小文字を無視して2つの文字列を比較する最善の方法は、文字列比較を指定するString.Equals静的メソッドを使用することです。 これは最速の方法でもあり、文字列を大文字または小文字に変換してから比較するよりもはるかに高速です。

私は両方のアプローチのパフォーマンスをテストし、順序無視のケースストリングの比較は9倍以上速かった ! また、文字列を大文字または小文字に変換するよりも信頼性が高くなります(トルコ語のiの問題をチェックしてください)。 だから常にString.Equalsメソッドを使って文字列を比較し、

String.Equals(string1, string2, StringComparison.OrdinalIgnoreCase);

カルチャ固有の文字列比較を実行する場合は、次のコードを使用できます。

String.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase);

2番目の例では、現在のカルチャの文字列比較ロジックを使用しているため、最初の例の "順序無視ケース"の比較よりも時間がかかります。したがって、カルチャ固有の文字列比較ロジックが不要で、パフォーマンスを最大にした後、「順序無視ケース」の比較を使用します。

詳細については、私のブログの全文を読んでください。

Question

私は、大文字と小文字が区別されることが分かっ

if (StringA == StringB) {

2つの文字列を区別しないで比較する演算子はありますか?




または

if (StringA.Equals(StringB, StringComparison.CurrentCultureIgnoreCase)) {

StringAがnullでないことを確認する必要があります。 だからおそらく良い使用:

string.Equals(StringA , StringB, StringComparison.CurrentCultureIgnoreCase);

ジョンが示唆したように

編集:バグを修正




string.Compare(string1, string2, true)



他の答えはここで完全に有効ですが、何とかStringComparison.OrdinalIgnoreCaseString.Compareを入力するには時間がかかりString.Compare

単純なString拡張メソッドを記述しました。ここでは、比較が大文字と小文字を区別するか、大文字小文字を区別しないかを指定できます。以下の答えを参照してください。

https://.com/a/49208128/2338477




System.Collections.CaseInsensitiveComparer

または

System.StringComparer.OrdinalIgnoreCase



オペレーター? いいえ、でも文字列の比較では大文字と小文字が区別されないように文化を変更できると思います。

// you'll want to change this...
System.Threading.Thread.CurrentThread.CurrentCulture
// and you'll want to custimize this
System.Globalization.CultureInfo.CompareInfo

私は、文字列がequals演算子で比較される方法が変更されると確信しています。