Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار باستخدام 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
challenge icon

التحدي

سهل

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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتحكم في التدفق

تدرّب بنفسك: مترجم Lua عبر الإنترنت