我如何做一个不区分大小写的string比较?
我怎样才能使行不区分大小写?
drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);
今天早些时候给了我一些build议,build议我使用:
x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));
麻烦的是我不能得到这个工作,我已经尝试下面的行,这个编译但返回错误的结果,它返回登记的用户作为未注册和未注册的用户作为登记。
drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));
任何人都可以指出这个问题吗?
这不是在.NET框架(4&+)中检查相等性的最佳实践
String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0
改用以下代码
String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)
MSDNbuild议:
- 使用String.Equals方法的重载来testing两个string是否相等。
- 使用String.Compare和String.CompareTo方法对string进行sorting, 而不是检查相等性 。
你应该使用如下的静态String.Compare
函数
x => String.Compare (x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0
请使用这个比较:
string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
我想你会在这个链接中find更多的信息:
http://codeidol.com/community/dotnet/controlling-case-sensitivity-when-comparing-two-st/8873/
使用String类的Compare静态方法比较两个string。 比较是否区分大小写取决于其重载的第三个参数。 例如:
string lowerCase = "abc"; string upperCase = "AbC"; int caseInsensitiveResult = string.Compare(lowerCase, upperCase, StringComparison.CurrentCultureIgnoreCase); int caseSensitiveResult = string.Compare(lowerCase, StringComparison.CurrentCulture);
caseSensitiveResult值是-1(表示lowerCase是“小于”upperCase),而caseInsensitiveResult是零(表示lowerCase“等于”upperCase)。
如何使用StringComparison.CurrentCultureIgnoreCase
来代替?
您可以(虽然controverse)扩展System.String以提供不区分大小写的比较: public static bool CIEquals(this String a, String b) { return a.Equals(b, StringComparison.CurrentCultureIgnoreCase); }
public static bool CIEquals(this String a, String b) { return a.Equals(b, StringComparison.CurrentCultureIgnoreCase); }
并使用这样的:
x.Username.CIEquals((string)drUser["Username"]);
C#允许你创build数十万的扩展方法,可以在你的项目中作为语法build议,我相当有用。
它不是答案,我知道这个问题是古老和解决,我只是想添加这些位。
您可以随时使用函数:.ToLower(); .ToUpper();
转换你的string,然后比较它们…
祝你好运