我知道以下是区分大小写的:
if (StringA == StringB) {
那么有一个运算符会以不敏感的方式比较两个字符串吗?
试试这个:
string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
比较2个字符串忽略字母大小写的最佳方法是使用String.Equals静态方法指定序数忽略大小写字符串比较.这也是最快的方法,比将字符串转换为大写或大写更快,并在此之后进行比较.
我测试了两种方法的性能和序数忽略情况下字符串比较快了9倍!它比将字符串转换为小写或大写更可靠(请查看土耳其语问题).因此,始终使用String.Equals方法来比较字符串是否相等:
String.Equals(string1, string2, StringComparison.OrdinalIgnoreCase);
如果要执行特定于区域性的字符串比较,可以使用以下代码:
String.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase);
请注意,第二个示例使用当前区域性的字符串比较逻辑,这使得它比第一个示例中的"序数忽略大小写"比较慢,因此如果您不需要任何特定于区域性的字符串比较逻辑,那么在最大性能之后,使用"序数忽略情况"比较.
有关更多信息,请阅读我博客上的完整故事.
StringComparer
静态类上有许多属性可以为您可能需要的任何类型的区分大小写返回比较器:
StringComparer
属性
例如,你可以打电话
StringComparer.CurrentCultureIgnoreCase.Equals(string1, string2)
要么
StringComparer.CurrentCultureIgnoreCase.Compare(string1, string2)
这比清洁有点string.Equals
或者string.Compare
是采取重载StringComparison
的说法.
System.Collections.CaseInsensitiveComparer
要么
System.StringComparer.OrdinalIgnoreCase
string.Equals(StringA, StringB, StringComparison.CurrentCultureIgnoreCase);
要么
if (StringA.Equals(StringB, StringComparison.CurrentCultureIgnoreCase)) {
但是你需要确保StringA不为null.所以可能更好的使用:
string.Equals(StringA , StringB, StringComparison.CurrentCultureIgnoreCase);
正如约翰所说
编辑:纠正了错误