字符串比较错误

pen*_*bot 3 c# compare immediate-window .net-4.0

如果我输入我的立即窗口

String.Compare("AA", "SA");
Run Code Online (Sandbox Code Playgroud)

我得到1的结果

肯定这是错的?AA小于SA所以不应该是-1?

我正在运行.NET 4

Mar*_*ers 7

在丹麦文化中,"AA"被视为单个字母"Å",按字母顺序排列在"Z"之后.

CultureInfo cultureInfo = CultureInfo.GetCultureInfo("da-DK");
int comparision = String.Compare("AA", "SA", false, cultureInfo);
Console.WriteLine(comparision);
Run Code Online (Sandbox Code Playgroud)

结果:

1
Run Code Online (Sandbox Code Playgroud)

要获得您想要的结果,您可以使用不变文化(或具有您所需排序顺序的特定文化):

CultureInfo cultureInfo = CultureInfo.InvariantCulture;
int comparision = String.Compare("AA", "SA", false, cultureInfo);
Console.WriteLine(comparision);
Run Code Online (Sandbox Code Playgroud)

结果:

-1
Run Code Online (Sandbox Code Playgroud)

  • 刚刚写了[this](http://rextester.com/CRK15034)来找到它返回"1"的所有文化 (3认同)