Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿copiar caracteres hasta ? (https://www.clubdelphi.com/foros/showthread.php?t=72479)

JXJ 22-02-2011 05:00:42

¿copiar caracteres hasta ?
 
hola.

A) ¿como puedo copiar caracteres hasta un delimitador y no copiar mas?

y como copiar los caracteres
B) despues de el delimitador?
el delimitador es el punto .

me explico si tengo.
A)
clubdelphi.com

resultado
clubdelphi

B)
clubdelphi.com
resultado
com

no lo tengo muy claro que digamos.

el como se copiar

marcoszorrilla 22-02-2011 07:13:28

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
S:String;
s1,s2:String;
n:Integer;
n1:integer;
begin
s:='ClubDelphi.com';
n:=Pos('.',s);
n1:=Length(s)-n;

S1:=Copy(s,1,n-1);
S2:=Copy(s,n+1,n1);

ShowMessage(s1);
ShowMessage(s2);

end;

Mira este ejemplo.

Un Saludo.

ElKurgan 22-02-2011 07:21:00

En Delphi 2005 (no se si en versiones anteriores viene) existe una función denominada "ExtractStrings", que devuelve en un TStringList (pasado por referencia) todas las subcadenas separadas por un caracter separador contenidas en un string. La función devuelve el número de "tokens" encontrados en la cadena.

De la ayuda de Delphi:

Cita:

En el parámetro "Separators" se usan como separadores (además de los
caracteres que deseemos) los retornos de carro, nueva línea y las
comillas (simples o dobles), aunque en un string entre comillas estos
caracteres se ignoran hasta el final de la cadena entrecomillada.

El parámetro "WhiteSpace" es un conjunto de caracteres que van a ser
ignorados al parsear el contenido de la cadena si se encuentran al
principio de la mima.

La función no limpia el contenido de la lista, sólo añade las cadenas
parseadas a cualquier contenido anterior de la misma. Tampoco añade
cadenas vacías (empty strings) al contenido.

Ejemplo:

Código Delphi [-]
function GetAllTokens(const sCadena: string; cSeparador: char;
  var Lista: TStrings; bLimpiarLista: Boolean): Integer;
begin
  if bLimpiarLista then
    Lista.Clear;
  Result := ExtractStrings([cSeparador], [' '], PAnsiChar(sCadena), Lista);
end;

Un saludo

ecfisa 22-02-2011 11:31:11

Hola JXJ.

Otro modo más:

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

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Ts: TStrings;
begin
  Ts:= TstringList.Create;
  SplitStr('.', 'clubdelphi.com', Ts);
  Memo1.Lines:= Ts;
end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 01:06:22.

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