2012-09-27 46 views
3

到我的即時窗口如果我鍵入此字符串比較錯誤

String.Compare("AA", "SA"); 

我得到的1

肯定這是錯的結果? AA小於SA,所以不應該是-1?

我運行.NET 4

+1

我得到-1:http://rextester.com/WUDD T41321 – Jamiec

+0

這就是讓我感到困惑的地方,我不明白爲什麼它會返回錯誤的結果。 – pengibot

+0

必須是文化問題 – Habib

回答

7

在丹麥文化「AA」被視爲一個單一的字母「A」和字母說到「Z」後。

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

結果:

1 

爲了得到你想要的,你可以使用不變的文化(或具有排序順序,你希望有一個特定的文化)的結果:

CultureInfo cultureInfo = CultureInfo.InvariantCulture; 
int comparision = String.Compare("AA", "SA", false, cultureInfo); 
Console.WriteLine(comparision); 

結果:

-1 
+0

就是這樣!檢查我的文化,它被設置爲丹麥大聲笑認爲我生氣 – pengibot

+3

剛剛寫了[這個](http://rextester.com/CRK15034)找到所有的文化,它返回'1' – Jamiec