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