Spanish Ordenar strings

musaso

Active Member
Licensed User
Longtime User
No consigo ordenar de forma natural una serie de strings.

Por ejemplo :

Modulo 0
Modulo 1
Modulo 2
Modulo 4
Modulo 12
Modulo 15

Este seria el orden natural pero tanto con SQL (ORDER BY) como con list.sort me lo ordena asi:

Modulo 0
Modulo 1
Modulo 12
Modulo 15
Modulo 2
Modulo 4

No tengo solo este tipo de cadenas, hay otras mas entre medias con distintos tipos (numeros y letras)
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
No consigo ordenar de forma natural una serie de strings.

Por ejemplo :

Modulo 0
Modulo 1
Modulo 2
Modulo 4
Modulo 12
Modulo 15

Este seria el orden natural pero tanto con SQL (ORDER BY) como con list.sort me lo ordena asi:

Modulo 0
Modulo 1
Modulo 12
Modulo 15
Modulo 2
Modulo 4

No tengo solo este tipo de cadenas, hay otras mas entre medias con distintos tipos (numeros y letras)
Como no justifiques los numeros con ceros por la izquierda, no veo la manera de hacerlo.
Si solo vinieran números en la cadena, siempre podrías hacer un cast as integer...
 

TheFalcon

Active Member
Licensed User
Longtime User
No se exactamente como recuperas los datos si de una base de datos , o no pero viendo que son números y todo tiene Modulo. Por que no guardas los números por un lado y al ordenarlos y mostrarlos les colocas delante Modulo, así si te lo ordenara Bien.
 

musaso

Active Member
Licensed User
Longtime User
Gracias por contestar, efectivamente los datos los tengo en una base de datos (Sqlite), pero este problema lo he tenido anteriormente otras veces y no he encontrado una solucion, tengo otros datos que no guardan ese patron, he pasado los datos a hexadecimal y tanto en SQL como en un list el orden no es el natural.
Al final me he "fabricado" una función que me pone un cero delante de los números del 1 al 9, luego los pongo en un list, los ordenó (Sort) y después les quito el cero de delante.
 
Top