【发布时间】:2012-11-08 13:54:51
【问题描述】:
可能重复:
Why does string.Compare seem to handle accented characters inconsistently?
我有以下代码
var s1 = "ABzzzzz2";
var s2 = "äbzzzzz1";
var cmp = StringComparison.InvariantCultureIgnoreCase;
Console.WriteLine(string.Compare(s1, 0, s2, 0, 7, cmp)); //prints -1
Console.WriteLine(string.Compare(s1, 0, s2, 0, 8, cmp)); //prints 1
为什么第一个字符串的一部分小于第二个字符串的一部分,而整个第一个字符串大于整个第二个字符串?
我已经在 x64、.net 2.0、3.5、4.0 上测试过了
【问题讨论】:
-
在我看来,最后的数字优先于定义顺序。
-
您可以简化您的样本:
var s1 = "a2"; var s2 = "ä1";顺便说一句,元音变音很重要。 -
我想你可以在这里找到答案:stackoverflow.com/q/1371813/284240
-
@TimSchmelter 很好的发现!那里接受的答案中的关键句:通常忽略重音差异,如果基本字母有任何差异。
-
@Tim Schmelter:你能写一个答案让我接受吗?
标签: c# .net string comparison