Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2010
Avatar de Estifmauin
Estifmauin Estifmauin is offline
Miembro
 
Registrado: may 2008
Ubicación: Alicante
Posts: 24
Poder: 0
Estifmauin Va por buen camino
Otro enfoque, más legible, pero creo que menos eficiente:

Código Delphi [-]
function SoloNumeros(s:string):string;
var
  n :integer;
begin
  result:='';
  n:=1;
  while (n <= Length(s))
  and (s[n] in ['0'..'9']) do begin
    result:=result+s[n];
    Inc(n);
  end;
end;

function ExtraerNumeros(cadena, prefijo :string) :TStrings;
var
  i :integer;
begin
  result:=TStringList.Create;
  result.CommaText:=StringReplace(cadena,prefijo,',',[rfReplaceAll]);
  for i:=result.Count -1 downto 0 do begin
    result[i]:=SoloNumeros(result[i]);
    if result[i] = '' then result.Delete(i);
  end;
end;
Para llamarlo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  memo1.Lines:=ExtraerNumeros('HGL44DHS274HGL23JHGL41234HGL412YGHGL555XADSF1AHG12HGL999','HGL');
end;
Es más legible, pero insisto en que menos eficiente, y requiere uses StrUtils
Responder Con Cita
  #2  
Antiguo 01-12-2010
McK McK is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 33
Poder: 0
McK Va por buen camino
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!
Responder Con Cita
  #3  
Antiguo 01-12-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:
<?php
$s 
'DHS274HGL23JH41234HGL412YG';
preg_match_all('/HGL([0-9]+)/'$s$matches);
var_dump($matches[1]);
?>
// Saludos
Responder Con Cita
  #4  
Antiguo 03-12-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.918
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Desafortunadamente delphi no cuenta con un manejo de expresiones regulares
En la version actual si. Ademas que agregarle la libreria es cosa de niños.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 03-12-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
En la version actual si. Ademas que agregarle la libreria es cosa de niños.
Entonces, en la versión actual, definitivamente se impone el uso de expresiones regulares para resolver problemas como éste

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
Responder Con Cita
  #6  
Antiguo 03-12-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Desafortunadamente delphi no cuenta con un manejo de expresiones regulares, al menos delphi 7.
Ya lo tiene en Delphi XE, y aqui un ejemplo..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sacar numeros al azar edlm Varios 20 31-05-2012 21:50:40
Odenar Cadenas con letras y números Kandorf OOP 3 20-05-2010 01:51:55
Case pero con cadenas en vez de con caracteres noob Varios 9 21-01-2009 18:56:07
Comparar cadenas y sacar su semejanza en % CamiloVI Varios 5 15-05-2008 08:27:30
Sacar los números del 1 al 9 con dos digitos David OOP 4 06-03-2008 23:08:09


La franja horaria es GMT +2. Ahora son las 07:34:29.


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
Copyright 1996-2007 Club Delphi