Padomi

Kā parsēt iedalīto virkni stīgu sarakstā

Kā parsēt iedalīto virkni stīgu sarakstā


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.

Ir daudz reižu, kad virkne ir jāsadala virkņu virknē, izmantojot rakstzīmi kā atdalītāju. Piemēram, CSV (“komats atdalīts”) failam var būt tāda līnija kā “Zarko; Gajic ;; DelphiGuide”, un jūs vēlaties, lai šī rinda tiktu parsēta 4 rindās (virknes) “Zarko”, “Gajic”, “" ( tukša virkne) un "DelphiGuide", izmantojot semikolu ";" kā norobežotājs.

Delfi piedāvā vairākas virknes parsēšanas metodes, taču jūs varētu secināt, ka neviena no tām neveic tieši to, kas jums nepieciešams. Piemēram, ExtractStrings RTL metode norobežotājiem vienmēr izmanto pēdiņas (vienreizējas vai dubultas). Vēl viena pieeja ir izmantotAtdalītājs unAtdalīts teksts TStrings klases īpašības, bet diemžēl ieviešanā ir kļūda ("Delphi" iekšpusē), kur atstarpe vienmēr tiek izmantota kā norobežotājs.

Vienīgais risinājums norobežotas virknes parsēšanai ir savas metodes uzrakstīšana:

Iedalīts stīgu piemērs

~~~~~~~~~~~~~~~~~~~~~~~~~
procedūra ParseDelimited (const sl: TStrings; const vērtība: virkne; const norobežotājs: virkne);
var
dx: vesels skaitlis;
ns: virkne;
txt: virkne;
delta skaitlis: vesels skaitlis;
sākt
delta: = garums (atdalītājs);
txt: = vērtība + atdalītājs;
sl.BeginUpdate;
sl.Nodzēst;
mēģiniet
kamēr Garums (txt)> 0 darīt
sākt
dx: = Pos (atdalītājs, txt);
ns: = Kopēt (txt, 0, dx-1);
sl.Pievienot (ns);
txt: = Kopēt (txt, dx + delta, MaxInt);
beigas;
beidzot
sl.EndUpdate;
beigas;
beigas;
~~~~~~~~~~~~~~~~~~~~~~~~~

Lietojums (aizpilda Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', ';')



Komentāri:

  1. Joseph Harlin

    drosmīgi, kāda lieliska ziņa

  2. Rasheed

    Tajā ir kaut kas.

  3. Jamael

    man tas patīk

  4. Broderick

    tse all ......., ale duzhe ir smiekligi



Uzrakstiet ziņojumu