Neuvoja

Kuinka jäsentää rajattu merkkijono merkkijonoluetteloon

Kuinka jäsentää rajattu merkkijono merkkijonoluetteloon


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.

Monta kertaa sinun on jaettava merkkijono merkkijonojoukkoon käyttämällä merkkiä erottimena. Esimerkiksi CSV-tiedostossa ("pilkku" erotettu) voi olla rivi kuten "Zarko; Gajic ;; DelphiGuide" ja haluat, että tämä rivi jäsentään 4 riviksi (merkkijonoiksi) "Zarko", "Gajic", "" ( tyhjä merkkijono) ja "DelphiGuide" käyttämällä puolipistettä ";" erottimena.

Delphi tarjoaa useita menetelmiä merkkijonon jäsentämiseksi, mutta saatat huomata, että kumpikaan ei tee tarkalleen mitä tarvitset. Esimerkiksi ExtractStrings RTL -menetelmä käyttää rajoittimiin aina lainausmerkkejä (yksi tai kaksinkertainen). Toinen tapa on käyttäädelimiter jaDelimitedText TStrings-luokan ominaisuudet, mutta valitettavasti toteutuksessa on virhe ("Delphin sisällä"), jossa välilyöntiä käytetään aina erottimena.

Ainoa ratkaisu erotetun merkkijonon jäsentämiseen on kirjoittaa oma menetelmä:

Rajallinen merkkijono-esimerkki

~~~~~~~~~~~~~~~~~~~~~~~~~
menettely ParseDelimited (const sl: TStrings; const arvo: merkkijono; const erotin: merkkijono);
var
dx: kokonaisluku;
ns: merkkijono;
txt: merkkijono;
delta: kokonaisluku;
alkaa
delta: = Pituus (erotin);
txt: = arvo + erotin;
sl.BeginUpdate;
sl.Clear;
yrittää
kun taas Pituus (txt)> 0 tehdä
alkaa
dx: = Pos (erotin, txt);
ns: = Kopio (txt, 0, dx-1);
sl.Lisä (ns);
txt: = Kopioi (txt, dx + delta, MaxInt);
end;
vihdoin
sl.EndUpdate;
end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~

Käyttö (täyttää Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', '')



Kommentit:

  1. Gushicage

    Varmasti. Se oli ja kanssani. Voimme kommunikoida tästä aiheesta.

  2. Derham

    Understandably, thank you for your assistance in this matter.

  3. Kazisida

    Mitkä ovat sinun päässäsi?



Kirjoittaa viestin