Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Extraer referencia numerica de un texto (https://www.clubdelphi.com/foros/showthread.php?t=22342)

asegurpe 13-06-2005 11:56:27

Extraer referencia numerica de un texto
 
:confused: Estoy trabajando en un programa el cual ha de extraer un cierto numero del nombre de ficheros .tif. Me explico:

Ejemplos pueden ser los siguientes:

12345 Titulo.tif --> 12345
12345_Titulo.tif --> 12345
1234 Titulo.tif --> 1234
1234_Titulo.tif --> 1234

En estos casos he de extraer los dos numeros de forma independiente:
12345 1234 Titulo.tif --> 12345
1234
12345_1234 Titulo.tif --> 12345
1234
12345_1234_Titulo.tif --> 12345
1234

Si alguien tiene algo de tiempo, ¿me podria ayudar a encontrar un algoritmo para resolver este programa?

De antemano muchas gracias.

paufra 13-06-2005 13:08:59

Una solución
 
A mi se me ocurre una solución. Primero pon el nombre del fichero en una variable (strNombreFichero) y haces un bulce comprobando los caracteres de la siguierte forma:

Código Delphi [-]
for intH := 1 to length(strNombreFichero) do
begin
    if strNombreFichero[intH] >= '0' and strNombreFichero[intH] <= '9' //caracteres de los numeros
        //Se añade a una vble. auxiliar
        strAux := strAux + strNombreFichero[intH]
    else
    begin
        if strAux <> '' then
        begin
            //Aqui ya tendras un numero completo, debes guardarlo, imprimirlo, lo que te haga falta. 
            strAux := ''; //Vaciar para recoger mas numeros
        end;
    end;    
end;

asegurpe 13-06-2005 13:16:43

gracias, esto resuelve una parte
 
Primero, gracias por esta solución.

La verdad es que resuelve parte del problema, pero aún hay dos detalles que fallan:

- En el caso de dos referencias distintas, las juntaria como una sola de 9
digitos
- Si en el título hubiese algún número también lo incluiria en la referencia



Recibe un saludo ;)

paufra 13-06-2005 13:29:36

Cita:

Empezado por asegurpe
- En el caso de dos referencias distintas, las juntaria como una sola de 9 digitos

Solo las juntaría si van seguidas, si hay un espacio o cualquier otro signo entre las dos las separaria.

Cita:

Empezado por asegurpe
- Si en el título hubiese algún número también lo incluiria en la referencia

Claro, pero se puede mejorar haciendo que si encuentra mas de dos letras seguidas que termine antes. O haciendo un analisis posterior de los numeros. Depende de para que los vas a utilizar.

asegurpe 13-06-2005 13:39:43

Muchas gracias
 
Muchas gracias por tu ayuda.

Tienes toda la razón, no me habia mirado bien el codigo.

;)


La franja horaria es GMT +2. Ahora son las 10:37:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi