2009-06-11 6 views
3

可能性の重複:
大文字小文字を区別しないStringComparisonsの違いは?

Which is generally best to use — StringComparison.OrdinalIgnoreCase or StringComparison.InvariantCultureIgnoreCase?

(列A、列B、StringComparison comparisonType)String.Equalsを使用し、 'A' の場合と 'B' を気にしません、使用する適切なStringComparisonは何ですか? つまり、StringComparison.CurrentCultureIgnoreCase、StringComparison.InvariantCultureIgnoreCase、およびStringComparison.OrdinalIgnoreCaseの違いは何ですか?また、それぞれがString.Equalsの使用にどのように影響しますか?

+0

どちらが正しいかは、文字列の比較をどのような用途に使うかによって決まります。それで、あなたは何をしようとしていますか?大文字小文字を区別しない平等のために2つの文字列を比較する理由は何ですか?文字列はどこから来たのか、結果はどこに行くのですか? –

+0

類似点:http://stackoverflow.com/questions/72696/which-is-generally-best-to-use-stringcomparison-ordinalignorecase-or-stringcom – Greg

+0

この[MSDN](http://msdn.microsoft.com /en-us/library/system.stringcomparison.aspx)ページに詳細が示されますが、例はありません。 – ChrisF

答えて

2

大文字の小文字は、すべての言語で同じではありません。たとえば、 "u"の大文字はen-usの "U"ですが、それは他の文化の中にあるかもしれません。

には、例えば、これを試してみてください:

 CultureInfo english = new CultureInfo("en-US", false); 
     CultureInfo turkish = new CultureInfo("tr-TR", false); 

     foreach (String i in new String[] { "a", "e", "i", "o", "u" }) 
     { 
      String iEng = i.ToUpper(english); 
      String iTur = i.ToUpper(turkish); 
      Console.Write(i); 
      Console.WriteLine(iEng == iTur ? " Equal" : " Not equal"); 
     } 

     Console.ReadLine(); 

をあなたは、このような文字を含む、現在のスレッドの文化に入力された文字列を持っているのであれば、インバリアントカルチャを使用すると、誤った結果を与えるかもしれません。あなたが比較された文字列が現在のカルチャーに入力されていることを確信しているならば、私はCurrentCultureIgnoreCaseを使用します。

+0

いい例。あなたはこのオンラインデモへのリンクを与えることができます:http://www.ideone.com/6kqy3 – Nawaz

関連する問題