Computerwissenschaften

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

Es gibt viele Fälle, in denen Sie eine Zeichenfolge in ein Array von Zeichenfolgen aufteilen müssen, indem Sie ein Zeichen als Trennzeichen verwenden. Beispielsweise kann eine CSV-Datei (durch Kommas getrennt) eine Zeile wie „Zarko; Gajic ;; DelphiGuide“ enthalten, und Sie möchten, dass diese Zeile in 4 Zeilen (Zeichenfolgen) „Zarko“, „Gajic“, „“ ( leere Zeichenfolge) und „DelphiGuide“ mit dem Semikolon „;“ als Trennzeichen.

Delphi bietet verschiedene Methoden zum Parsen einer Zeichenfolge, aber Sie werden möglicherweise feststellen, dass keine genau das tut, was Sie benötigen. Beispielsweise verwendet die ExtractStrings RTL-Methode immer Anführungszeichen (einfach oder doppelt) für Trennzeichen. Ein weiterer Ansatz besteht darin , die verwenden Trennzeichen und DelimitedText Eigenschaften der TStrings Klasse, aber leider gibt es einen Fehler bei der Umsetzung ( „inside“ Delphi) , wo das Leerzeichen immer als Trennzeichen verwendet wird.

Die einzige Lösung zum Parsen einer durch Trennzeichen getrennten Zeichenfolge besteht darin, eine eigene Methode zu schreiben:

 

Beispiel für eine begrenzte Zeichenfolge

~~~~~~~~~~~~~~~~~~~~~~~~~
Prozedur ParseDelimited (const sl: TStrings; const Wert: string; const delimiter: string);
var
dx: Ganzzahl;
ns: string;
txt: string;
Delta: ganze Zahl; Delta
beginnen
:=Länge (Trennzeichen);
txt:=Wert + Trennzeichen;
sl.BeginUpdate;
sl.Clear;
versuchen Sie,
während Länge (txt)> 0
beginnt
dx:=Pos (Trennzeichen, txt);
ns:=Kopieren (txt, 0, dx-1);
sl.Add (ns);
txt:=Kopieren (txt, dx + delta, MaxInt);
Ende;
endlich
sl.EndUpdate;
Ende;
Ende;
~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.