الدرس 8 من 10

أنماط النصوص

هدف الدرس

find و match و gmatch و gsub

01

الشرح

في مكتبة النصوص أربع دوال تبحث بـالأنماط: find تُرجع موضع أول تطابق، وmatch تُرجع ما التقطته الأقواس، وgmatch تمرّ على كل التطابقات في حلقة for، وgsub تستبدلها كلها. وبها تُقرأ أوامر الدردشة وسجلّات الخادم.

لكن أنماط Lua ليست regex. الهروب فيها بـ % لا بـ \: %d رقم، و%a حرف لاتيني، و%s مسافة، و+ تعني مرّة أو أكثر. والأقواس تلتقط، و^ في أول النمط تثبّته في أول النصّ، و$ في آخره تثبّته في آخره. ولا | فيها ولا {2,3} ولا \b.

والرموز ^ $ ( ) % . [ ] * + - ? خاصّة، فلتطابق أحدها حرفيًّا اسبقه بـ %: %^ و%.. وmatch تُرجع نصوصًا، فحوّل الأرقام بـ tonumber. وgsub تُرجع قيمتين: النصّ وعدد الاستبدالات، فأحِط النداء بقوسين إن أردت النصّ وحده.

02

المطلوب

اكتب parseGive(msg): لرسالة هي بالضبط /give sword 3 وأمثالها تُرجع اسم الغرض ثم عدده رقمًا، ولغيرها nil. وtotalXp(log) تجمع كل +25xp وأمثالها في السجلّ. وstripColors(msg) تحذف رموز الألوان ^0 إلى ^9 كما في دردشة FiveM.

معايير التصحيح

6 معايير
  1. parseGive تستخرج الغرض وعدده رقمًا
  2. العدد يقبل أكثر من خانة
  3. ترفض ما لا يبدأ بالأمر
  4. وترفض الزيادة في آخره والعدد غير الرقمي
  5. totalXp تجمع كل +Nxp
  6. stripColors تحذف رموز الألوان
main.lua
المخرجاتLua 5.4 · wasmoon

جارٍ تحميل Lua…

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».