爲什麼.NET會按照它們在ASCII table中出現的順序或SQL對它們進行排序的順序對字符「+」和「^」進行排序。.NET如何對特殊字符進行排序?
在ASCII table「+」擁有42值和「^」有94個值,但如果你喜歡這個運行代碼:
var list = new List<string> { "+", "^", "!" };
list.Sort();
該列表將包含以下順序值:
{「!」,「^」,「+」}
LINQ排序生成相同的結果。有人能告訴我什麼樣的.NET類?
爲什麼.NET會按照它們在ASCII table中出現的順序或SQL對它們進行排序的順序對字符「+」和「^」進行排序。.NET如何對特殊字符進行排序?
在ASCII table「+」擁有42值和「^」有94個值,但如果你喜歡這個運行代碼:
var list = new List<string> { "+", "^", "!" };
list.Sort();
該列表將包含以下順序值:
{「!」,「^」,「+」}
LINQ排序生成相同的結果。有人能告訴我什麼樣的.NET類?
.NET不使用ASCII,它使用Unicode。當您執行字符串排序時,.NET(默認情況下)使用當前文化的規則進行排序。在這種情況下,這些規則表明「^」在「+」之前。你可以得到你所期望通過「序」字符串比較器的結果:
var list = new List<string> { "+", "^", "!" };
list.Sort(StringComparer.Ordinal); // Order is "!", "+", "^"
+1。一些排序規則的鏈接可以在我對類似問題的回答中找到 - http://stackoverflow.com/questions/9475535/order-of-punctuation-marks-vs-letters/9475570#9475570 –
這是由當前區域性設置,在CompareInfo屬性定義來定義。每種文化都有針對文化的字符串排序規則。
你不排序字符,你正在排序字符串。 –