Adviezen

Hoe een afgebakende string in een stringlijst te parseren

Hoe een afgebakende string in een stringlijst te parseren


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.

Er zijn vaak momenten waarop je een string moet splitsen in een reeks strings door een karakter als scheidingsteken te gebruiken. Een CSV-bestand ("komma" gescheiden) kan bijvoorbeeld een regel hebben als "Zarko; Gajic ;; DelphiGuide" en u wilt dat deze regel wordt geparseerd in 4 regels (tekenreeksen) "Zarko", "Gajic", "" ( lege tekenreeks) en "DelphiGuide" met het puntkomma ";" als een scheidingsteken.

Delphi biedt verschillende methoden om een ​​string te parseren, maar het kan zijn dat geen van beide precies doet wat u nodig hebt. De RTL-methode ExtractStrings gebruikt bijvoorbeeld altijd aanhalingstekens (enkel of dubbel) voor scheidingstekens. Een andere benadering is om deDelimiter enDelimitedText eigenschappen van de TStrings-klasse, maar helaas zit er een fout in de implementatie ("in" Delphi) waarbij het spatie-teken altijd als scheidingsteken wordt gebruikt.

De enige oplossing voor het ontleden van een gescheiden string is het schrijven van een eigen methode:

Voorbeeld van gescheiden tekenreeks

~~~~~~~~~~~~~~~~~~~~~~~~~
procedure ParseDelimited (const sl: TStrings; const waarde: string; const scheidingsteken: string);
var
dx: geheel getal;
ns: string;
txt: string;
delta: geheel getal;
beginnen
delta: = lengte (scheidingsteken);
txt: = waarde + scheidingsteken;
sl.BeginUpdate;
sl.Clear;
proberen
terwijl Lengte (txt)> 0 doen
beginnen
dx: = Pos (scheidingsteken, txt);
ns: = Kopiëren (txt, 0, dx-1);
sl.Add (ns);
txt: = Copy (txt, dx + delta, MaxInt);
einde;
Tenslotte
sl.EndUpdate;
einde;
einde;
~~~~~~~~~~~~~~~~~~~~~~~~~

Gebruik (vult Memo1 in):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', ';')


Bekijk de video: 3 ways businesses can fight sex trafficking. Nikki Clifton (Juli- 2022).


Opmerkingen:

  1. Najja

    Ik raad u aan een site te bezoeken waarop er veel artikelen over deze vraag staan.

  2. Vito

    Juist! It seems to me it is very good idea. Volledig bij jou, ik zal het daarmee eens zijn.

  3. Malazilkree

    Ik ben het ermee eens, dit is een geweldig idee.

  4. Lenno

    Zoals het gebrek aan smaak

  5. Faujora

    Ik denk dat je een fout begaat. Laten we bespreken. Schrijf me in PM, we zullen praten.



Schrijf een bericht