Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   funcion split de una cadena (https://www.clubdelphi.com/foros/showthread.php?t=75885)

look 24-09-2011 18:20:02

funcion split de una cadena
 
hola , sabe alguna manera de partir una cadena en un arreglo.
encontre esta funcion, pero no me da problemas con los espacios.

look 24-09-2011 18:25:11

hola, ya lo he solucionado , me encontre estas funciones

escafandra 25-09-2011 01:41:31

Te propongo esta solución:

Código Delphi [-]
//---------------------------------------------------------------------------
// Extrae cadenas separadas por un separador C
// Ind es el indice de la cadena a extraer, comenzando por 0
function  Splitz(S: String; Ind: integer; C: CHAR): String;
var
   I, F, N: integer;
begin
   I:= 1;
   F:= 1;
   N:= Length(S);
   while Ind>0 do
   begin
     while(I<=N) and (S[i]<>C) do inc(I);
     inc(I); dec(Ind);
   end;
   F:= I;
   while(F<=N) and (S[F]<>C) do inc(F);

   Result:= Copy(S, I, F-I);
end;

Ejemplo:

Código Delphi [-]
Edit1.Text:= Splitz('Cadena de texto;;con separadores; y uso de; splitz', 2, ';');


Saludos.

ogalonzo 10-10-2011 22:05:47

Intenta con ExtractStrings()
 
Prueba con ExtractStrings(); intenta esto:
  1. Deposita un TEdit, un TButton y un TMemo
  2. Haz doble clic en el TButton y pon este código:
    Código:

      Memo1.Lines.Clear();
      ExtractStrings([';'], [' '], PChar(Edit1.Text), Memo1.Lines);

  3. Corre el programa, introduce una cadena separada con puntos y comas y listo, cuando hagas clic en el botón verás que el memo se llena con las cadenas.

Espero sirva.

ecfisa 10-10-2011 23:14:56

Hola.

Agrego otra opcion:
Código Delphi [-]
...
type
  TVecStr = array of string;

procedure SplitStrToArray(Cadena: string; const Delimitadores: string; var V: TVecStr);
var
  c,i,p:Integer;
begin
  Cadena:= Cadena + Delimitadores[1];
  c:=0;
  p:= 1;
  for i:= 1 to Length(Cadena) do
  begin
    if Pos(Cadena[i], Delimitadores) <> 0 then
    begin
      SetLength(V, Length(V) + 1);
      V[c]:= Copy(Cadena, p, i-p);
      p:= i + 1;
      Inc(c);
    end;
  end;
end;

Ejemplo de uso:
Código Delphi [-]
...
var
  v: TVecStr;
  i: Integer;
begin
  SplitStrToArray('SplitStrToArray:Función que-parte;una.cadena;en,un arreglo con.varios-delimitadores', ' ,;-.:', V);
  for i:= Low(v) to High(v) do
    ListBox1.Items.Add(v[i])
  ...

Saludos.


La franja horaria es GMT +2. Ahora son las 21:16:56.

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