一個奇怪的問題,我的代碼是:約string.compare方法
static void Main(string[] args)
{
Console.WriteLine(string.Compare("-", "a"));//output -1
Console.WriteLine(string.Compare("-d", "a"));//output 1
Console.Read();
}
誰可以告訴我爲什麼嗎?
一個奇怪的問題,我的代碼是:約string.compare方法
static void Main(string[] args)
{
Console.WriteLine(string.Compare("-", "a"));//output -1
Console.WriteLine(string.Compare("-d", "a"));//output 1
Console.Read();
}
誰可以告訴我爲什麼嗎?
默認情況下,字符串比較使用文化特定設置。這些設置允許將不同的訂單和權重應用於字母和符號;例如,當使用大多數文化設置進行排序時,「簡歷」和「簡歷」將顯得相當接近,因爲「é」在「e」之後,「f」之前排列,即使Unicode代碼頁放置得很好在英文字母的其餘部分之後。類似地,不是空白的符號在字符串中佔據一個位置,但被認爲是「連接」的,如破折號,斜槓等,被賦予低「重量」,因此它們只被認爲是繫帶破壞者。這意味着「a-b」會在「ab」之後和「ac」之前排序,因爲短劃線不如字母重要。
你認爲你想要的是「有序排序」,其中字符串根據字符串中的第一個差異進行排序,基於Unicode代碼頁中不同字符的相對序號位置。如果「 - 」也會出現在「a」之前,這將在「a」之前放置「-d」,因爲短劃線被認爲是完整的「字符」,並與同一位置的字符「a」進行比較。但是,在真實單詞列表中,當按順序排列的列表中時,這將按順序放置「重做」,「簡歷」,「松香」,「盧布」,「重做」和「簡歷」 ,這在上下文中可能沒有意義,當然也不適用於非英語的人。
它比較對方內的字符的位置。換句話說,「 - 」在之前(小於)「a」。
String.Compare()
使用字排序規則比較時。請注意,這些都是相對的位置。這裏有一些來自MSDN的信息。
值:條件
負:STRA小於STRB
零:STRA等於STRB
正:STRA大於STRB
上述比較適用於本超載:
public static int Compare(
string strA,
string strB
)
的 - 被視爲在由.NET Framework排序的特殊情況。此答案有詳細信息:https://stackoverflow.com/a/9355086/1180433
+1:目前爲止的最佳答案 – 2012-03-13 01:54:48