A szétválasztott karakterlánc elemzése egy karakterláncokba (Delphi)

click fraud protection

Sokszor el kell osztani a húr egy sor karakterláncok elválasztásával. Például, egy CSV ("vesszővel elválasztott") fájlnak lehet egy sor, például: "Zarko; Gajic;; DelphiGuide ", és azt akarja, hogy ezt a sort 4 sorra (karakterláncokra)" Zarko "," Gajic "," "(üres karakterlánc) és" DelphiGuide "sorba sorolják, elválasztóként a"; "pontosvessző karaktert használva.

A Delphi többféle módszert kínál a húr string elemzésére, de előfordulhat, hogy egyik sem teszi pontosan azt, amire szüksége van. Például az ExtractStrings RTL módszer mindig idézőjeleket (egyszeri vagy dupla) használ a határolókra. Egy másik megközelítés adelimiter ésDelimitedText a TStrings osztály tulajdonságai, de sajnos van egy hiba a implementációban ("Delphi" belül), ahol a szóköz karakter mindig elválasztóként van felhasználva.

~~~~~~~~~~~~~~~~~~~~~~~~~
ParseDelimited eljárás (const sl: TStrings; const érték: karakterlánc; const elválasztó: húr);
var
dx: egész szám;
ns: húr;
txt: húr;
delta: egész szám;
kezdődik
delta: = hossz (elválasztó);

instagram viewer

txt: = érték + elválasztó;
sl. BeginUpdate;
sl. Egyértelmű;
próbáld ki
míg a Hosszúság (txt)> 0 nem
kezdődik
dx: = Pos (határoló, txt);
ns: = Másolás (txt, 0, dx-1);
sl. Add (ns);
txt: = Másolás (txt, dx + delta, MaxInt);
végén;
végül
sl. EndUpdate;
végén;
végén;
~~~~~~~~~~~~~~~~~~~~~~~~~

Használat (kitölti a Memo1-et):
ParseDelimited (Memo1.lines, „Zarko; Gajic;; DelphiGuide”, ';')

instagram story viewer