Tanácsok

A behatárolt karakterlánc elemzése egy karakterlánc-listába

A behatárolt karakterlánc elemzése egy karakterlánc-listába


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Sokszor el kell osztani egy karakterláncot karakterláncok tömbjére, ha karaktert választ el elválasztóként. 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 a "DelphiGuide" pontosvesszős karaktert használva ";" mint határoló.

A Delphi számos módszert kínál egy karakterlánc 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 megvalósításban ("Delphi" belül), ahol a szóköz karakter mindig elválasztóként kerül felhasználásra.

Az elválasztott karakterlánc elemzésének egyetlen megoldása a saját módszerének írása:

Határozott karakterlánc példa

~~~~~~~~~~~~~~~~~~~~~~~~~
ParseDelimited eljárás (const sl: TStrings; const érték: string; const elválasztó: string);
var
dx: egész szám;
ns: húr;
txt: húr;
delta: egész szám;
kezdődik
delta: = hossz (elválasztó);
txt: = érték + elválasztó;
sl.BeginUpdate;
sl.Clear;
próbálja meg
míg a hossz (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', ';')



Hozzászólások:

  1. Dhoire

    Szerintem nincs igazad. Biztos vagyok benne. Írj PM-ben, megbeszéljük.

  2. Samucage

    Csatlakozom. So happens. Kommunikálhatunk ezen a témán. Itt vagy PM -ben.

  3. Boyd

    Jaj! Sajnálatos módon!

  4. Milward

    As the specialist, I can render the help.

  5. Gojind

    Azt hiszem, hibát követsz el. Meg tudom védeni az álláspontomat. Küldjön e -mailt nekem a miniszterelnöknél, beszélünk.



Írj egy üzenetet