Mengurai String yang Dibatasi Menjadi Daftar String (Delphi)

Ada banyak waktu ketika Anda perlu membagi a tali menjadi sebuah Himpunan string dengan menggunakan karakter sebagai pemisah. Misalnya, file CSV ("terpisah") mungkin memiliki baris seperti "Zarko; Gajic;; DelphiGuide "dan Anda ingin baris ini diurai menjadi 4 baris (string)" Zarko "," Gajic "," "(string kosong) dan" DelphiGuide "menggunakan karakter semi-colon"; "sebagai pembatas.

Delphi menyediakan beberapa metode untuk mengurai string, tetapi Anda mungkin menemukan bahwa tidak ada yang melakukan apa yang Anda butuhkan. Misalnya, metode ExtractStrings RTL selalu menggunakan karakter kutipan (tunggal atau ganda) untuk pembatas. Pendekatan lain adalah dengan menggunakanPembatas danDelimitedText properti dari kelas TStrings — tetapi sayangnya, ada bug dalam implementasinya ("di dalam" Delphi) di mana karakter ruang selalu digunakan sebagai pembatas.

~~~~~~~~~~~~~~~~~~~~~~~~~
prosedur ParseDelimited (const sl: TStrings; nilai const: string; pembatas const: string);
var
dx: integer;
ns: string;
txt: string;

instagram viewer

delta: integer;
mulai
delta: = Panjang (pembatas);
txt: = value + delimiter;
sl. Mulai Pembaruan;
sl. Bersih;
mencoba
sedangkan Panjang (txt)> 0 do
mulai
dx: = Pos (pembatas, txt);
ns: = Salin (txt, 0, dx-1);
sl. Tambah (ns);
txt: = Salin (txt, dx + delta, MaxInt);
akhir;
akhirnya
sl. EndUpdate;
akhir;
akhir;
~~~~~~~~~~~~~~~~~~~~~~~~~

Penggunaan (terisi dalam Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic;; DelphiGuide ','; ')

instagram story viewer