c # регистрозависимая сортировка ASCII? - PullRequest
6 голосов
/ 06 февраля 2011

Мне нужно отсортировать строковый массив, и он ДОЛЖЕН быть отсортирован по ascii.

при использовании Array.Sort (myArray) он не будет работать.

например: myArray is ("aAzxxxx", "aabxxxx") при использовании Array.Sort (myArray) результат будет

  1. aabxxxx
  2. aAzxxxx

но если ascii sort, потому что A

  1. aAzxxxx
  2. aabxxxx

это результат, который мне нужен. Любые идеи о том, как ASCII сортировать строковый массив?

ТНХ

Ответы [ 3 ]

15 голосов
/ 06 февраля 2011

Если я вас правильно понял, вы хотите выполнить Порядковое сравнение.

Array.Sort(myArray, StringComparer.Ordinal);
3 голосов
/ 06 февраля 2011

Если вы хотите лексическую сортировку по коду, вы можете указать StringComparer.Ordinal в качестве компаратора для Array.Sort.

Array.Sort(myArray,StringComparer.Ordinal);

StringComparer, возвращаемый свойством Ordinal, выполняет простоесравнение байтов, которое не зависит от языка.Это наиболее уместно при сравнении строк, которые генерируются программно, или при сравнении чувствительных к регистру ресурсов, таких как пароли.

StringComparer class содержит несколько различных компараторов, из которых вы можетевыберите в зависимости от того, какую культуру или регистр вы хотите.

1 голос
/ 06 февраля 2011

Используйте перегрузку Sort, которая принимает подходящее IComparer<T>:

Array.Sort(myArray, StringComparer.InvariantCulture);

Этот тип чувствителен к регистру .

Если вы ищете сортировку по значению ASCII , используйте StringComparer.Ordinal:

Array.Sort(myArray, StringComparer.Ordinal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...