التكرار باستخدام string.gmatch()
جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 39 من 54.
بينما تعثر string.match() على أول occurrence لـ pattern، ماذا لو احتجت إلى العثور على جميع matches في string؟ تحل function string.gmatch() هذه المشكلة بإرجاع مكرّر يمكنك استخدامه في حلقة for لمعالجة كل match واحدًا تلو الآخر.
تبدو الصياغة الأساسية كما يلي:
for match in string.gmatch(text, pattern) do
-- معالجة كل تطابق
endإليك مثالًا يعثر على جميع الأرقام في سلسلة نصية:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- المخرجات:
-- 3
-- 5يطابق النمط %d+ رقمًا واحدًا أو أكثر، وتعمل الحلقة مرة واحدة لكل عدد يتم العثور عليه.
يمكنك أيضًا استخراج جميع الكلمات من جملة:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- المخرجات:
-- Lua
-- is
-- a
-- powerful
-- languageالتحدي
سهلWrite دالة extractHashtags تأخذ text وتُعيد جميع علامات hashtags الموجودة في النص، كلٌّ منها في سطر منفصل.
استخدم string.gmatch() للعثور على جميع علامات hashtags في النص. تبدأ علامة hashtags بالرمز # متبوعًا بحرف واحد أو أكثر.
المنطق:
- استخدم
string.gmatch()مع pattern"#%a+"للعثور على جميع علامات hashtags - كرّر العملية عبر كل match واجمعها
- اربط جميع علامات hashtags باستخدام محارف السطر الجديد (
\n) - إذا لم يتم العثور على أي علامات hashtags، فنّذ return لسلسلة نصية فارغة
المعلمات:
text(string): النص الذي سيتم البحث فيه عن علامات hashtags
القيمة المُعادة: جميع علامات hashtags التي تم العثور عليها، كلٌّ منها في سطر منفصل. إذا لم توجد أي علامات hashtags، فنّذ return لسلسلة نصية فارغة (string)
جرّب بنفسك
function extractHashtags(text)
-- اكتب الكود هنا
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتحكم في التدفق
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية4مقدمة إلى Metatables
ما هو الـ Metatable؟setmetatable و getmetatableالـ Metamethod المسماة __indexالـ Metamethod المسماة __newindexالـ Metamethod المسماة __tostringالـ Metamethods الحسابية - الجزء الأولالـ Metamethods الحسابية - الجزء الثانيملخص - جدول للقراءة فقط7معالجة النصوص المتقدمة
استخدام string.gsub() للاستبدالمقدمة في أنماط النصوصstring.find()string.match()التكرار باستخدام string.gmatch()مراجعة - محلل ملفات السجل2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائجتدرّب بنفسك: مترجم Lua عبر الإنترنت