有一个原因:
string s1 =“aéa”; string s2 =“aea”;
string result = s1.Equals(s2, StringComparison.CurrentCultureIgnoreCase);
result = s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
尽管我现在的文化是法国人,但在所有情况下result = false。 我希望2行中的一行应该返回true?
另一方面,我得到了
int a = string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);
a = 0表示平等。
这听起来很悖论。任何解释???
提前thx。答案 0 :(得分:1)
在第一次相等检查中,您忽略了当前文化中的StringComparison.CurrentCultureIgnoreCase
案例(fr)。因此,首先检查应该是false
。
在第二个问题中,您忽略了StringComparison.InvariantCultureIgnoreCase
在不变文化中的案例。 é在不变文化中不等于e。在大多数文化中,这些角色实际上是不同的(具有不同的含义)。此检查应为false
。
在上一篇文章中,您忽略了CompareOptions.IgnoreNonSpace
等变音符号等字符。最后一个应该是true
。
另请阅读here。