String Case Sensitivity
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Is there a C# case insensitive equals operator?
string string1="ABC"
string string2="ABC"
如何检查string1是否等于string2并使其返回true,而不管大小写敏感度如何。
两种方法:
您可以使用
1 | string.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase) |
编辑:为了安抚落选者,如果您的数据具有文化意义(即,您正在比较斯堪的纳维亚语单词,并且您当前的语言环境设置正确),则此操作非常有用。如果此数据在文化上不可知,并且您不关心区域设置(坏主意,特别是因为.NET使用Unicode,所以您可以这样做:
1 | string.Equals(string1, string2, StringComparison.OrdinalIgnoreCase) |
您应该使用这里的建议msdn:"字符串使用建议":
- do:使用StringComparison.Ordinal或OrdinalIgnoreCase进行比较,作为区域性不可知字符串匹配的安全默认值。
- 做:使用StringComparison.Ordinal和OrdinalIgnoreCase比较以提高速度。
- do:向用户显示输出时,使用基于StringComparison.CurrentCulture的字符串操作。
- do:将基于不变区域性的字符串操作的当前使用切换为使用非语言的StringComparison.Ordinal或StringComparison.OrdinalIgnoreCase(例如符号比较)。
- do:在规范化字符串进行比较时,使用toUpperInvariant而不是toLowerInvariant。
- 不要:对没有显式或隐式指定字符串比较机制的字符串操作使用重载。
- 不要:在大多数情况下使用StringComparison.InvariantCulture-Based字符串操作;少数例外情况之一是持久化有语言意义但文化上不可知的数据。
我必须承认他们让我大开眼界。尤其是最后一个。
您还可以使用string.compare,添加第三个参数,即
1 2 3 4 | if (string.Compare(string1, string2, true) == 0) { // string are equal } |
您还可以使用CompareInfo类:
1 2 3 4 5 | if (CultureInfo.CurrentCulture.CompareInfo.Compare(string1, string2, CompareOptions.IgnoreCase) == 0) { // string are equal } |
1 | string.Equals("aBc","AbC", StringComparison.CurrentCultureIgnoreCase) |
1 | string.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase); |
D