FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Odenar Cadenas con letras y números
Hola, estoy usando un TStrings y sé ordenarlo, el problema me surge en que este contiene números dentro de las cadenas, además no tienen por qué estar al principio de la cadena y puede o no contenerlos. No he encontrado solución para este caso particular.
Un ejemplo de cómo ordenaría es: 10 perro 3 casa hola 200 lalala hola 33 lalala hola 4 adiós Mientras que el orden correcto sería: 3 casa 10 perro hola 4 adiós hola 33 lalala hola 200 lalala (Disculpad por el ejemplo tan sumamente tonto e infantil, estoy espesito) Lo que se me ha ocurrido es, al ordenar como ya lo hago, buscar la longitud máxima de los números de las dos cadenas y hacer que todos la tengan, poniendo 0s delante, pero no sé si esto sería muy ineficiente. Os preguntaba por si hay alguna manera más eficiente, en caso contrario yo mismo construiré la función, ese no es el problema. Saludos y gracias por vuestro tiempo. |
#2
|
||||
|
||||
Hola kandorf.
No conozco la existencia de algo predefinido que evalue "cuantitativamente" los caracteres que representan un valor numérico. Dentro de una cadena los caracteres serán ordenados por su valor ASCII, por lo que 10, siempre será menor a 3, puesto que alfabéticamente el 1 precede al 3. Creo que como decis en el post, vas a tener que realizar una función que busque dígitos numéricos y si los hay, realize la conversíon numérica para luego realizar su reordenación, basada en la nueva regla que vos le impones. Por supuesto que no podrías usar propiedades como Sorted de TStringList, puesto que alteraría el órden impuesto por tu función. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
Bueno, ya he hecho las funciones para ordenar correctamente, las posteo por si le resulta últil a alguien.
En realidad ordena un StringGrid dada una columna, pero vale con sustituir "Cells[Columna,i]" por "Cadenas[i]", suponiendo que el TStrings se llame Cadenas: Espero que resulte útil a alguien. Por favor, opinen, el tiempo de proceso aumenta y se nota, yo estoy ordenando actualmente 625 cadenas bastante largas. Estaría encantado de que me corrigiérais la función Saludos. |
#4
|
|||
|
|||
No puedo editar mi anterior mensaje...
Tiene un fallo el código, donde pone: El "if Longitud>=3" lo puse para probar el código y poner un breackpoint ahí, quedaría
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Numeros a letras | citlalliDgp | Varios | 6 | 19-03-2009 07:14:54 |
Numeros y letras | Caral | Varios | 11 | 28-03-2008 18:22:53 |
Numeros En Letras | Cañones | Impresión | 2 | 11-06-2007 23:55:12 |
Numeros a Letras!! | jmedina | Varios | 26 | 20-10-2005 20:19:42 |
trasformar numeros a letras | NestorN | Varios | 1 | 17-09-2005 01:33:44 |
|