Possible Duplicate:
Which is generally best to use — StringComparison.OrdinalIgnoreCase or StringComparison.InvariantCultureIgnoreCase?
当使用 String.Equals(string a, string b, StringComparison comparisonType) 并且不关心 'a' 和 'b' 的大小写时,使用什么才是正确的 StringComparison?
换句话说,StringComparison.CurrentCultureIgnoreCase、StringComparison.InvariantCultureIgnoreCase 和 StringComparison.OrdinalIgnoreCase 之间有什么区别,每一个将如何影响 String.Equals 的使用?
问题是小写字母的大写版本在所有语言中都不相同。例如,“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,如果您确定比较的字符串是在当前区域性中输入的并且也应该以这种方式进行比较。