نصائح

كيفية تحليل سلسلة محددة في قائمة سلسلة

كيفية تحليل سلسلة محددة في قائمة سلسلة

هناك عدة مرات عندما تحتاج إلى تقسيم سلسلة إلى مجموعة من السلاسل باستخدام حرف كفاصل. على سبيل المثال ، قد يحتوي ملف CSV ("مفصول بفواصل") على سطر مثل "Zarko؛ Gajic ؛؛ DelphiGuide" وتريد أن يتم تحليل هذا السطر إلى 4 أسطر (سلاسل) "Zarko" ، "Gajic" ، "" (( سلسلة فارغة) و "DelphiGuide" باستخدام الحرف النقطي "؛" كمحدد.

توفر دلفي عدة طرق لتحليل سلسلة ، ولكن قد تجد أن لا أحد يفعل ما تحتاجه بالضبط. على سبيل المثال ، تستخدم طريقة ExtractStrings RTL دائمًا أحرف اقتباس (مفردة أو مزدوجة) للمحدِّدات. نهج آخر هو استخداممحدد وDelimitedText خصائص فئة TStrings- ولكن لسوء الحظ ، يوجد خطأ في التنفيذ ("داخل" دلفي) حيث يتم استخدام حرف المسافة دائمًا كمحدد.

الحل الوحيد لتحليل سلسلة محددة هو كتابة طريقة خاصة بك:

مثال على سلسلة محددة

~~~~~~~~~~~~~~~~~~~~~~~~~
الإجراء ParseDelimited (const sl: TStrings ؛ قيمة const: string ؛ const const: string)؛
فار
dx: عدد صحيح
ns: سلسلة ؛
النص: سلسلة.
دلتا: عدد صحيح
ابدأ
دلتا: = الطول (المحدد) ؛
txt: = قيمة + محدد ؛
sl.BeginUpdate.
sl.Clear.
محاولة
بينما طول (النص)> 0 القيام به
ابدأ
dx: = Pos (محدد ، txt) ؛
ns: = Copy (txt، 0، dx-1)؛
sl.Add (ns) ؛
txt: = Copy (txt، dx + delta، MaxInt)؛
النهاية؛
أخيرا
sl.EndUpdate.
النهاية؛
النهاية؛
~~~~~~~~~~~~~~~~~~~~~~~~~

الاستخدام (يملأ في Memo1):
ParseDelimited (Memo1.lines، "زاركو، Gajic ؛؛ DelphiGuide '،'، ')

شاهد الفيديو: سلسلة إكسل للمعلمين ح11: تكوين تقرير من أكثر من صفحة باستخدام القائمة المنسدلة (مارس 2020).