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