2010-02-07 23 views
8

que tienen una lista de cadena, que es más probable, pero no se garantiza que contiene una lista de valores numéricos, es decir,Ordenar con valores numéricos

{"1", "6", "2", "21", "89"} 

¿Cuál es la manera de ordenar la lista de cadenas por lo que siempre aparecerá en orden ascendente?

No puedo analizar la cadena numérica antes de hacer la clasificación simplemente porque la cadena puede contener caracteres no numéricos. Y no quiero pasar por la lista y verificar cada componente en números y hacer la clasificación. ¿Ya existe una biblioteca para este propósito?

En el caso en que tengamos números mixtos y un elemento de cadena no numérico, las cadenas numéricas siempre tienen prioridad sobre las cadenas no numéricas.

+1

La frase que está buscando es "ordenar por orden natural". – Ken

Respuesta

0

Si esto es C#, para eso es Int32.TryParse().

Si esto es C++, entonces std :: string :: find_first_not_of es una apuesta decente. Pásale una cuerda que contenga los caracteres ascii para los dígitos del 0 al 9 (más los signos menos y más?) Y si devuelve -1, entonces es un número entero.

+2

No, él quiere poder ordenar listas como esta: {a1, a10, a11, a2, a3} de forma natural: {a1, a2, a3, a10, a11}. TryParse obviamente no funcionará. – Steven

1

desea ordenar los elementos, al igual que el Explorador de Windows XP hace con los archivos. Consulte this article sobre cómo hacer esto.

Cuestiones relacionadas