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

التكرار باستخدام string.gmatch()

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 39 من 54.

بينما تجد string.match() أول ظهور لنمط ما، ماذا لو كنت بحاجة للعثور على جميع التطابقات في سلسلة نصية؟ تقوم الدالة string.gmatch() بحل هذه المشكلة عن طريق إرجاع مكرر (iterator) يمكنك استخدامه في حلقة for لمعالجة كل تطابق واحداً تلو الآخر.

تبدو الصيغة الأساسية كالتالي:

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

التحدي

سهل

اكتب دالة extractHashtags تأخذ text وتعيد جميع الوسوم (hashtags) الموجودة في النص، بحيث يكون كل وسم في سطر منفصل.

استخدم string.gmatch() للعثور على جميع الوسوم في النص. يبدأ الوسم بـ # متبوعاً بحرف واحد أو أكثر.

المنطق:

  • استخدم string.gmatch() مع النمط "#%a+" للعثور على جميع الوسوم
  • قم بالمرور عبر كل تطابق وقم بتجميعها
  • قم بربط جميع الوسوم باستخدام أحرف السطر الجديد (\n)
  • إذا لم يتم العثور على أي وسوم، فقم بإرجاع سلسلة نصية فارغة

المعاملات:

  • text (string): النص المراد البحث فيه عن الوسوم

المخرجات: جميع الوسوم التي تم العثور عليها، كل منها في سطر منفصل. إذا لم تكن هناك وسوم، فقم بإرجاع سلسلة نصية فارغة (string)

ورقة مرجعية

تعيد الدالة string.gmatch() مكررًا (iterator) يبحث عن جميع تكرارات نمط معين في سلسلة نصية، مما يسمح لك بمعالجة كل تطابق في حلقة for.

الصيغة الأساسية:

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
-- Output:
-- 3
-- 5

مثال على استخراج جميع الكلمات:

local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
    print(word)
end
-- Output:
-- Lua
-- is
-- a
-- powerful
-- language

جرّب بنفسك

function extractHashtags(text)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow