2012-06-14 7 views
7

.NETは、 '+'と '^'の文字をASCII tableに表示される順序とは異なる順序で並べ替える理由、またはSQLの並べ替え方法です。 「+」ASCII table.NETはどのように特殊文字を並べ替えるのですか?

は42の値を持っていると「^」94の値を持っていますが、このようなコードを実行する場合:

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

次の順序で値が含まれていますリスト:

を{"!"、 "^"、 "+"}

LINQ sortは同じ結果を生成します。誰かが.NETのどんな種類の並べ替えを教えてくれますか?

+1

文字をソートしていません。文字列をソートしています。 –

答えて

17

.NETはASCIIを使用せず、Unicodeを使用します。文字列の並べ替えを実行すると、.NET(既定)では並べ替えに現在のカルチャの規則が使用されます。この場合、これらのルールは、 "^"が "+"の前に来ることを示します。これはCompareInfoプロパティで定義されている現在のカルチャのセットによって定義され

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

+1。ソートルールへのいくつかのリンクは、同様の質問への私の答えで見つけることができます - http://stackoverflow.com/questions/9475535/order-of-punctuation-marks-vs-letters/9475570#9475570 –

2

:あなたは、「序」の文字列の比較子を使用して期待した結果を得ることができます。各カルチャには、文化固有のソートルールがあります。

関連する問題