Analysieren Sie eine begrenzte Zeichenfolge in eine Zeichenfolgenliste (Delphi).

click fraud protection

Es gibt viele Male, in denen Sie a teilen müssen Zeichenfolge In ein Array von Zeichenfolgen durch Verwendung eines Zeichens als Trennzeichen. Beispielsweise kann eine CSV-Datei (durch Kommas getrennt) eine Zeile wie "Zarko" haben. Gajic;; DelphiGuide "und Sie möchten, dass diese Zeile in 4 Zeilen (Zeichenfolgen)" Zarko "," Gajic "," "(leere Zeichenfolge) und" DelphiGuide "unter Verwendung des Semikolons"; "als Trennzeichen analysiert wird.

Delphi bietet verschiedene Methoden zum Parsen einer Zeichenfolge. Möglicherweise stellen Sie jedoch fest, dass keine genau das tut, was Sie benötigen. Beispielsweise verwendet die RTL-Methode ExtractStrings immer Anführungszeichen (einfach oder doppelt) für Trennzeichen. Ein anderer Ansatz ist die Verwendung derTrennzeichen undDelimitedText Eigenschaften der TStrings-Klasse - aber leider gibt es einen Fehler in der Implementierung ("innerhalb" von Delphi), bei dem das Leerzeichen immer als Trennzeichen verwendet wird.

~~~~~~~~~~~~~~~~~~~~~~~~~
Prozedur ParseDelimited (const sl: TStrings; const value: string; const delimiter: string);

instagram viewer

var
dx: ganze Zahl;
ns: string;
txt: string;
Delta: ganze Zahl;
Start
Delta: = Länge (Trennzeichen);
txt: = Wert + Trennzeichen;
sl. BeginUpdate;
sl. Klar;
Versuchen
während Länge (txt)> 0 tun
Start
dx: = Pos (Trennzeichen, txt);
ns: = Kopieren (txt, 0, dx-1);
sl. Addiere (ns);
txt: = Kopieren (txt, dx + delta, MaxInt);
Ende;
schließlich
sl. EndUpdate;
Ende;
Ende;
~~~~~~~~~~~~~~~~~~~~~~~~~

Verwendung (füllt Memo1 aus):
ParseDelimited (Memo1.lines, 'Zarko; Gajic;; DelphiGuide ','; ')

instagram story viewer