【发布时间】:2016-03-14 18:40:18
【问题描述】:
有什么原因吗:
字符串 s1 = "aéa"; 字符串 s2 = "aea";
string result = s1.Equals(s2, StringComparison.CurrentCultureIgnoreCase);
result = s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
result = false 在所有情况下,尽管我目前的文化是法国文化。 我希望这两行之一应该返回 true?
另一方面,我得到了
int a = string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);
a = 0 表示相等。
这对我来说听起来很矛盾。有什么解释???
提前谢谢。
【问题讨论】:
-
你可以参考这个网址寻求帮助。stackoverflow.com/questions/2876237/…
-
您的前两个比较忽略了大小写,而您的第三个比较忽略了nonspacing combining characters(包括尖锐的口音),因此它们会产生不同的结果似乎是合乎逻辑的。如果您使用
CompareOptions.IgnoreCase,我猜结果将与您的第一次比较匹配。 -
@Mark "aéa" 和 "aea" 的大小写相同。那么从我的角度来看,与 CurrentCultureIgnoreCase 的比较应该返回 true 吗?我正在寻找返回这些字符串相等的不同方法。
标签: c# string cultureinfo