![]() |
Sacar números de cadenas de caracteres.
Parece una pregunta un tanto tonta, ya que con 2 bucles for y recorriéndola se puede hacer, pero me preguntaba si pudiera existir alguna función en delphi que sea más efectiva y menos medieval para hacerlo.
Como ejemplo, lo que quiero hacer es sacar los numeros que vienen detras de unas letras concretas en una cadena de caracteres: DHS274HGL23JH41234HGL412YG Las letras concretas aquí (p.e.) serían HGL. Por lo que los números que en este caso necesitaría sacar y guardar son el 23 y el 412. Un saludo y gracias! |
|
Pues a mi sólo se me ocurre con 2 bucles.
El primero para encontrar y recorrer las ocurrencias de la cadena buscada (suponiendo que hay varias) y el segundo para extraer los números antes de la csiguiente letra (que por lo que veo pueden tener longitud indeterminada). |
Hola McK.
Estoy de acuerdo con Neftali, se necesitan dos ciclos. Pero mas eficiente que usar dos for es:
Ejemplo de llamada:
Saludos. :) |
Otro enfoque, más legible, pero creo que menos eficiente:
Para llamarlo: Es más legible, pero insisto en que menos eficiente, y requiere uses StrUtils |
Perfecto, gracias a todos. Aunque no haya una instrucción de Delphi eso está bastante simplificado. Yo lo tenía algo peor implementado.
Un saludo! |
Desafortunadamente delphi no cuenta con un manejo de expresiones regulares, al menos delphi 7. Por ejemplo, en PHP este problema se resuelve así:
Código PHP:
|
Cita:
|
Cita:
Te adjunto la prueba:
¿ Podrías poner un ejemplo que te dé el ciclo infinito ? Así puedo evaluarlo. Saludos. :) |
Cita:
|
Cita:
En la cadena anterior: Cita:
Es por que inicialicé mal el contador de ocurrencias numéricas y si o sí me pone un caracter aunque no sea un número. Hay que inicializar distinto a 'i':
Un saludo. :) |
Cita:
|
Cita:
Código:
function ExtractNum(Sub, Str: string): TStrings;Saludos :) |
Cita:
También tienes razón en que puede usarse una librería (biblioteca por si Al lee esto) externa, pero cuando se requiere para apenas un uso puntual, como que se siente que se está matando una pulga a cañonazos :) // Saludos |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 20:35:31. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi