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 11-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
separar una cadena 5263-526-30 que me quede 30

necesito separar una cadena
ej:
5263-526-30
que me quede
30

alguien q me pueda ayudar en una funcion o algo asi.
que me quede la cadena despues del ultimo separador -
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 11-08-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Hay varias formas, una es que recorras la cadena de forma invertida y te detengas al encontrar el primer '-':

Código Delphi [-]
for I := Length(Cadena) to 1 do
begin
  if Cadena[i] = '-' then
    Exit;
  Insert(Cadena[i], Result, 1)
end


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 11-08-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow Otras alternativas

Si se trata de copiar o extraer los dos ultimos caracteres de la cadena, pues se puede hacer:
Código Delphi [-]
Cadena_Separada:=RightStr(Cadena,2);
o tambien
Código Delphi [-]
Cadena_Separada:=Copy(Cadena,Length(Cadena)-1,2);
Ojo: Para que te funcione lo anterior no debe haber ningun espacio al final de la cadena..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #4  
Antiguo 11-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
no, pueden haber mas numero despues del separador
y tambien hay muchos separadores.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #5  
Antiguo 12-08-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Bueno en ese caso puedes hacerlo tal como te ha indicado Maeyanes o bien así:
Código Delphi [-]
    p:=LastDelimiter('-',Cadena);//Obtengo la ultima posicion del caracter '-' en la cadena
   Cadena_Separada:=RightStr(Cadena,length(Cadena)-p);//Extraigo la parte derecha de la cadena a partir de la pocision p+1
O tambien
Código Delphi [-]
    p:=LastDelimiter('-',Cadena);//Obtengo la ultima posicion del caracter '-' en la cadena
   Cadena_Separada:=Copy(Cadena,p+1,length(cadena)-p);//copio a partir de la pocision p+1 hacia adelante
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 12-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Separar cadenas en un arreglo.
__________________

Responder Con Cita
  #7  
Antiguo 12-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ContraVeneno Ver Mensaje
Muy interesante el artículo ContraVeneno.

Cuando ví el post se me ocurrió una solución parecida a la de maeyanes pero usando while, y conocía también el uso de LastDelimiter propuesto rgstuamigo, por eso no agregué código similar.

Pero esta solución usando TStrings, por lo menos para mí, es novedosa.

Gracias por el aporte.


Saludos.

Última edición por ecfisa fecha: 12-08-2010 a las 19:12:13.
Responder Con Cita
  #8  
Antiguo 12-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
20130-8563-675

Código Delphi [-]
for I := Length(Cadena) Downto 1 do
begin  
  if Cadena[i] = '-' then  
    break;  

  Insert(Cadena[i], Result, 1)
end

1. obtengo 675 , correcto.

2. pero quiero tambien la cadena 20130-8563
?? como lo hago.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #9  
Antiguo 12-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Con la solución de ContraVeneno, es sencillísimo.

Código Delphi [-]
procedure Split (const Delimiter: Char; Input: string; const Strings: TStrings) ;
begin
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;

...

var
  ts: TStrings;
begin
  ts:= TStringList.Create;
  Split('-', '20130-8563-675', ts);
end;

Entonces tenés: '20130' en ts[0], '8563'en ts[1] y '675' en ts[2].

Saludos.
Responder Con Cita
  #10  
Antiguo 12-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Como para abrir el abanico, esta es otra solución
Código Delphi [-]
var
  Cad, Res: string;
begin
  Cad:= '20130-8563-675';
  Res:=  Copy(Cad,1,Pos('675',Cad)-2); 
end;
Pero es mucho mejor la solución de ContraVeneno, por que del otro modo ya tenés que usar dos funciones: una para obtener el primero y otra para obtener el último...
Y si mañana se te presenta tener que obtener el tercer grupo de : '13412-707-1307-00893-32', vas a tener que usar una tercera... o cuarta.

Usando la solución con TStringList, podés obtener cualquier grupo de dígitos con sólo especificar el string y el delimitador y luego concatenás lo que quieras.
Para este caso:
Código Delphi [-]
   Re:= ts[0] + '-' + ts[1];


Saludos.

Última edición por ecfisa fecha: 12-08-2010 a las 23:49:14.
Responder Con Cita
  #11  
Antiguo 14-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
listo, para obener los primeros numero de la cadena


cadena= '852-652-30'
p:=LastDelimiter('-',Cadena);
Cadena_Separada:=Copy(Cadena,1,p-1);


resp: 852-652

ya obtube las dos cosas q necesitaba
gracias.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #12  
Antiguo 14-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Me alegro que lo hayas resuelto.

Saludos.
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
Como separar una cadena con un delimitador radge Varios 13 05-03-2016 22:52:52
Tengo problemas con reg_split, para separar una cadena David PHP 1 17-02-2010 17:53:02
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Separar cadena de numeros cyborgve Impresión 1 16-05-2007 06:37:31


La franja horaria es GMT +2. Ahora son las 17:01:35.


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