2011-02-06 19 views
6

necesito ordenar una matriz de cuerdas y DEBE estar ordenada por ascii.C# tipo ASCII sensible a mayúsculas y minúsculas?

si usa Array.Sort (myArray), no funcionará.

por ejemplo: myArray es ("aAzxxxx", "aabxxxx") si se utiliza Array.Sort (myArray) el resultado será

  1. aabxxxx
  2. aAzxxxx

pero si ascii ordena, porque A < a, (capital A es 65, a es 97, entonces A < a) el resultado será

  1. aAzxxxx
  2. aabxxxx

este es el resultado que necesito. ¿Alguna idea sobre cómo ASCII ordenar una matriz de cuerdas?

THX

Respuesta

13

Si le he entendido bien, que desea realizar una comparación ordinal.

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

Usar una sobrecarga de Sort que toma una adecuada IComparer<T>:

Array.Sort(myArray, StringComparer.InvariantCulture); 

Esta especie es sensible a mayúsculas .

Si usted está buscando una clasificación por el valor ASCII , utilice StringComparer.Ordinal:

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

El uso de StringComparer.InvariantCulture dará como resultado el mismo orden que el op ya estaba recibiendo. Para obtener el resultado, el operador espera StringComparer.Ordinal. –

3

Si desea una especie de léxico por el char-código que puede suministrar StringComparer.Ordinal como un comparador de Array.Sort.

Array.Sort(myArray,StringComparer.Ordinal); 

El StringComparer devuelto por la propiedad ordinal realiza una comparación simple de bytes que es independiente del lenguaje. Esto es más apropiado cuando se comparan cadenas que se generan mediante programación o cuando se comparan recursos que distinguen entre mayúsculas y minúsculas, como las contraseñas.

La StringComparer class contiene varias comparaciones diferentes entre las que puede elegir según la cultura o la distinción de mayúsculas y minúsculas que desee.

Cuestiones relacionadas