Array

Cómo analizar una cuerda delimitada en una lista de cuerdas

Black man using laptop in coffee shop

Hay muchas veces cuando necesita dividir una cadena en una matriz de cadenas utilizando un carácter como separador. Por ejemplo, un archivo CSV (& amp; quot; comma & amp; quot; separado) podría tener una línea como & amp; quot; Zarko; Gajic; DelphiGuide & amp; quot; y desea que esta línea se analice en 4 líneas (cadenas) & amp; quot; Zarko & amp; quot;.

Delphi proporciona varios métodos para analizar una cadena, pero es posible que ninguno haga exactamente lo que necesita. Por ejemplo, el método ExtractStrings RTL siempre usa caracteres de comillas (únicos o dobles) para delimitadores. Otro enfoque es usar el & amp; # x200B; Delimiter y & amp; # x200B; DelimitedText propiedades de la clase TStrings & amp; # x2014; pero desafortunadamente, el carácter de bugquot.

Video destacado

La única solución para analizar una cadena delimitada es escribir un método propio:

Ejemplo de cadena delimitada

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
& lt; br & gt ;
procedimiento ParseDelimited (const sl: TStrings; valor const: string; const delimiter: string) ;
& lt; br & gt ;
var
& lt; br & gt ;
dx: entero;
& lt; br & gt ;
ns: cadena ;
& lt; br & gt ;
txt: cadena ;
& lt; br & gt ;
delta: entero;
& lt; br & gt ;
comenzar
& lt; br & gt ;
delta: = Longitud (delimitador);
& lt; br & gt ;
txt: = valor + delimitador ;
& lt; br & gt ;
sl.BeginUpdate ;
& lt; br & gt ;
sl.Clear ;
& lt; br & gt ;
Intentar
& lt; br & gt ;
mientras que Length (txt) & amp; gt; 0 hacer
& lt; br & gt ;
comenzar
& lt; br & gt ;
dx: = Pos (delimitador, txt);
& lt; br & gt ;
ns: = Copiar (txt, 0, dx-1);
& lt; br & gt ;
sl.Add (ns);
& lt; br & gt ;
txt: = Copiar (txt, dx + delta, MaxInt);
& lt; br & gt ;
final;
& lt; br & gt ;
finalmente
& lt; br & gt ;
sl.EndUpdate ;
& lt; br & gt ;
final;
& lt; br & gt ;
final;
& lt; br & gt ;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ & lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;

Uso (completa Memo1):
& lt; br & gt ;
ParseDelimited (Memo1.lines, & amp; apos; Zarko; Gajic;; DelphiGuide & amp; apos;, & amp; apos;;;) & lt; / br & gt ;

& amp; # x203A; Informática

Dejar respuesta

Please enter your comment!
Please enter your name here

FOLLOW US

Related Stories