לנתח מחרוזת מופרדת לרשימת מיתרים (דלפי)

יש הרבה פעמים שאתה צריך לפצל א מחרוזת לתוך מערך של מחרוזות באמצעות תו כמפריד. לדוגמה, לקובץ CSV ("מופרד בפסיק") עשוי להיות שורה כמו "זרקו; גאגית;; DelphiGuide "ואתה מעוניין לנתח את השורה ל -4 שורות (מחרוזות)" Zarko "," Gajic "," "(מחרוזת ריקה) ו-" DelphiGuide "תוך שימוש בתו המעי הגס"; "כמגביל.

דלפי מספקת מספר שיטות לניתוח מחרוזת, אך יתכן שתגלה שאף אחד לא יעשה בדיוק את מה שאתה צריך. לדוגמא, שיטת ה- ExtractStrings RTL משתמשת תמיד בתווי ציטוט (יחידה או כפולה) לתוחמים. גישה נוספת היא להשתמש ב-תוחם וDelimitedText המאפיינים של מחלקת ה- TStrings - אך למרבה הצער, ישנו באג ביישום ("בתוך" דלפי) שבו תו החלל משמש תמיד כמגביל.

~~~~~~~~~~~~~~~~~~~~~~~~~
הליך ParseDelimited (const sl: TStrings; ערך const: מחרוזת; const delimiter: string);
var
dx: מספר שלם;
ns: מחרוזת;
txt: מחרוזת;
דלתא: מספר שלם;
התחל
דלתא: = אורך (תוחם);
txt: = ערך + תוחם;
sl. BeginUpdate;
sl. ברור;
נסה
ואילו אורך (txt)> 0 כן
התחל
dx: = Pos (תוחם, txt);
ns: = העתק (txt, 0, dx-1);
sl. הוסף (ns);
txt: = העתק (txt, dx + delta, MaxInt);
סוף;
סוף סוף
sl. EndUpdate;
סוף;
סוף;
~~~~~~~~~~~~~~~~~~~~~~~~~

instagram viewer

שימוש (ממלא בתזכיר 1):
ParseDelimited (Memo1.lines, 'זרקו; גאגית;; DelphiGuide ','; ')