2011-02-06 29 views
6

私は文字列配列をソートする必要がありますし、それはasciiでソートされなければなりません。c#大文字小文字の区別ASCIIソート?

Array.Sort(myArray)を使用している場合、動作しません。例えば

: MyArrayというが( "aAzxxxx"、 "aabxxxx")である のArray.sort(MyArrayという)を用いた場合 結果は

  1. aabxxxx
  2. なりaAzxxxx

しかし、asciiソートの場合、A < a(資本Aは65、aは97なのでA <) の結果は

  1. aAzxxxx
  2. aabxxxx

これは私が必要とする結果です。どのように文字列の配列をASCIIソートするかについての任意のアイデア?

THX

答えて

13

私が正しくあなたを理解している場合は、序数の比較を行いたいです。あなたは文字コードによって、字句の並べ替えをしたい場合は

Array.Sort(myArray, StringComparer.Ordinal); 
1

適しIComparer<T>を取るSortのオーバーロードを使用します。この種の

Array.Sort(myArray, StringComparer.InvariantCulture); 

大文字と小文字が区別です。

あなたはStringComparer.Ordinalを使用し、ASCII値によるソートを探している場合:

Array.Sort(myArray, StringComparer.Ordinal); 
+1

StringComparer.InvariantCultureを使用すると、opがすでに取得しているのと同じ順序になります。結果を得るには、opはStringComparer.Ordinalが必要です。 –

3

あなたはArray.Sortに比較子としてStringComparer.Ordinalを供給することができます。

Array.Sort(myArray,StringComparer.Ordinal); 

序プロパティによって返さStringComparerは、言語に依存しないで、単純なバイトの比較を行います。これは、プログラムで生成された文字列を比較する場合や、パスワードなどの大文字と小文字を区別するリソースを比較する場合に最も適しています。

StringComparer classにはいくつかの相違点が含まれています。どの文化や大文字と小文字を区別するかによって選択することができます。

関連する問題