.NET如何排序特殊字符?

时间:2012-06-14 17:36:38

标签: c# .net sorting

为什么.NET按照ASCII table中显示的顺序或SQL排序方式对字符'+'和'^'进行排序。

ASCII table中,'+'的值为42,而'^'的值为94但是如果你运行这样的代码:

var list = new List<string> { "+", "^", "!" };
list.Sort();

列表将按以下顺序包含值:

{“!”,“^”,“+”}

LINQ排序生成相同的结果。有人能告诉我.NET的用途是什么吗?

2 个答案:

答案 0 :(得分:17)

.NET不使用ASCII,它使用Unicode。执行字符串排序时,.NET(默认情况下)使用当前区域性的排序规则。在这种情况下,这些规则表明“^”出现在“+”之前。您可以使用“序数”字符串比较器获得您期望的结果:

var list = new List<string> { "+", "^", "!" };
list.Sort(StringComparer.Ordinal); // Order is "!", "+", "^"

答案 1 :(得分:2)

这是由CompareInfo属性中定义的当前文化集定义的。每种文化都有针对字符串的特定文化排序规则。