string.find()
جزء من قسم الأساسيات في رحلة Lua على Coddy. الدرس 48 من 90.
تُعدّ الدالة string.find() أداة قوية للبحث داخل السلاسل النصية. تتيح لك البحث عن سلسلة نصية أصغر (تُسمى نمطًا) داخل سلسلة نصية أكبر، وتخبرك بالمكان الذي عُثر عليها فيه بالضبط.
إليك الصياغة الأساسية:
string.find(text, pattern)عندما تحدد string.find() النمط بنجاح، فإنها تُرجع عددين: موضع بداية التطابق وموضع نهايته. وإذا لم يُعثر على النمط، فإنها تُرجع nil.
إليك مثالًا بسيطًا:
local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos) -- المخرجات: 5 12في هذا المثال، تبدأ الكلمة «treasure» عند الموضع 5 وتنتهي عند الموضع 12 في الجملة.
هناك أمر عليك معرفته: النص الذي تبحث عنه هو نمط، وليس نصًا عاديًا. لبعض المحارف معانٍ خاصة في الأنماط: . % - + * ? [ ] ^ $ ( ). ستتعرف إليها لاحقًا في الدورة. تطابق الأحرف والأرقام والمسافات نفسها، كما في المثال أعلاه، لكن قد يطابق المحرف الخاص أكثر مما قصدت:
print(string.find("Score: 105", "1.5")) -- الناتج: 8 10 (طابقت . الرقم 0)للبحث عن النص تمامًا كما كُتب، أضف وسيطين آخرين: 1 (ابدأ من الحرف الأول) وtrue (بحث عادي، بلا أحرف خاصة):
print(string.find("Score: 105", "1.5", 1, true)) -- الناتج: nil
print(string.find("Version 1.5", "1.5", 1, true)) -- الناتج: 9 11التحدي
سهلأنشئ كاشفًا للرسائل السرية يبحث عن كلمة مشفّرة مخفية داخل رسالة نصية أطول. عرّف متغيرًا يُسمّى message وأسند إليه القيمة "The ancient treasure lies beneath the old oak tree". استخدم الدالة string.find() للبحث عن الكلمة "treasure" داخل الرسالة، وخزّن موضعي البداية والنهاية في متغيرين يُسمّيان startPos وendPos. اطبع قيمتي الموضعين، كلًّا منهما في سطر منفصل.
جرّب بنفسك
-- عرّف المتغير message
local message = "The ancient treasure lies beneath the old oak tree"
-- TODO: اكتب الكود هنا للعثور على الكلمة "treasure" وتخزين مواضعها
-- اطبع المواضع
print(startPos)
print(endPos)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات 2: العمليات العلائقية والمنطقية
معاملات التساويالمعاملات العلائقيةالمعامل 'and'المعامل 'or'المعامل 'not'التقييم قصير الدائرةقيم Truthy و Falsyمراجعة - المنطق البسيط10الجداول الجزء 1: نمط القائمة
ما هو الجدول؟إنشاء جدولالوصول إلى العناصر عبر الفهرستعديل العناصر عبر الفهرسمعامل الطول '#'table.insert()table.remove()ملخص - إدارة أعضاء الفريق13مشروع: متجر جرعات بسيط
إعداد المشروعإضافة جرعة2المتغيرات وأنواع البيانات
ما هو المتغير؟الأرقامالسلاسل النصيةالقيم المنطقيةالقيمة 'nil'الدالة type()قواعد التسميةمراجعة - ملف الشخصية5الإخراج الأساسي
طباعة القيم الحرفيةطباعة المتغيراتطباعة قيم متعددةدمج النصوص والمتغيراتدالة tostring()الإدخال (Input)التحويل (Cast)مراجعة - تقرير الحالةمراجعة - حتى 1208أساسيات معالجة النصوص
string.len()string.upper و string.lowerstring.sub()string.rep()string.find()مراجعة - تنسيق اسم المستخدم3المعاملات 1: العمليات الحسابية والدمج
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسدمج النصوصأولوية المعاملاتملخص - حسابات بسيطة6مشروع: عرض إحصائيات الشخصية
رسالة ترحيبتعريف إحصائيات الشخصية9أساسيات الدوال
تعريف دالةاستدعاء دالةدوال مع معاملاتدوال بمعاملات متعددةجملة 'return'مراجعة - حاسبة المساحة12أساسيات الحلقات التكرارية
حلقة whileحلقة repeat-untilحلقة for الرقميةحلقة for مع خطوةجملة 'break'مراجعة - العد التنازليتدرّب بنفسك: مترجم Lua عبر الإنترنت