C# 字符串大小写敏感度
可能重复:C# 字符串大小写敏感度,c#,C#,可能重复: 字符串string1=“aBc” 字符串string2=“AbC” 如何检查string1是否等于string2并使其返回true,而不考虑大小写敏感性。两种方法: 您可以.ToLower()和执行字符串相等,也可以使用以下方法: string.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase) 编辑:为了安抚反对者,如果您的数据具有重要的文化意义(即,您正在比较斯堪的纳维亚语单词,并且您当前的语
字符串string1=“aBc” 字符串string2=“AbC” 如何检查string1是否等于string2并使其返回true,而不考虑大小写敏感性。两种方法: 您可以
.ToLower()
和执行字符串相等,也可以使用以下方法:
string.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase)
编辑:为了安抚反对者,如果您的数据具有重要的文化意义(即,您正在比较斯堪的纳维亚语单词,并且您当前的语言环境设置正确),则此操作非常有用。如果此数据在文化上是不可知的,并且您不关心区域设置(这是个坏主意,尤其是因为.NET支持Unicode),那么您可以这样做:
string.Equals(string1, string2, StringComparison.OrdinalIgnoreCase)
:D您还可以使用,添加第三个参数,即ignoreCase
:
您也可以使用该类:
您应在此处使用建议:
- DO:使用StringComparison.Ordinal或OrdinalIgnoreCase进行比较,作为区域性不可知字符串匹配的安全默认值
- DO:使用StringComparison.Ordinal和OrdinalIgnoreCase比较以提高速度
- DO:向用户显示输出时,使用基于StringComparison.CurrentCulture的字符串操作
- DO:切换基于不变区域性的字符串操作的当前使用,以使用非语言的StringComparison.Ordinal或StringComparison.OrdinalIgnoreCase(当比较在语言上不相关时)(例如,符号)
- DO:在规范化字符串以进行比较时,使用ToUpperInvariant而不是ToLowerInvariant
- 不要:对没有显式或隐式指定字符串比较机制的字符串操作使用重载
- 不要:在大多数情况下使用基于StringComparison.InvariantCulture的字符串操作为数不多的例外之一是保留有语言学意义但文化不可知的数据
我必须承认他们让我大开眼界。尤其是最后一个。重复:OP没有说明这是否是文化不可知论。具体来说,斯堪的纳维亚地区对哪些角色是其他人的首都有独特的规定。不过,谢谢你的否决票。-1因为我认为你的答案不完整。不过,我会考虑你对地区的看法。
string.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase);
string.Equals("aBc", "AbC", StringComparison.CurrentCultureIgnoreCase)
if (string.Compare(string1, string2, true) == 0)
{
// string are equal
}
if (CultureInfo.CurrentCulture.CompareInfo.Compare(string1, string2,
CompareOptions.IgnoreCase) == 0)
{
// string are equal
}