string.find()
جزء من قسم المنطق وتسلسل التنفيذ في رحلة Lua على Coddy. الدرس 37 من 54.
الآن بعد أن فهمت فئات الأحرف، يمكنك استخدامها مع string.find() للبحث عن الأنماط بدلًا من النصوص المطابقة تمامًا. وهذا يتيح إمكانيات قوية للتحقق من صحة النصوص وتحليلها.
تعمل الدالة string.find() بالطريقة نفسها مع الأنماط كما تعمل مع السلاسل النصية الحرفية. وتُرجع الموضع الذي يطابق فيه النمط لأول مرة:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- الناتج: 5يعثر هذا على أول رقم في السلسلة، وهو عند الموضع 5. يمكنك أيضًا البحث عن العكس باستخدام فئات الأحرف الكبيرة:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- الناتج: 1هنا، يطابق %D أي محرف غير رقمي، لذا يعثر على الحرف الأول عند الموضع 1.
من مهام التحقق الشائعة التأكد مما إذا كانت سلسلة تبدأ بنمط محدد. يمكنك استخدام المرساة ^ في بداية النمط لمطابقة بداية السلسلة فقط:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endيتحقق هذا النمط مما إذا كانت السلسلة تبدأ بحرف، مما يجعله مفيدًا للتحقق من صحة المدخلات عندما تكون هناك حاجة إلى تنسيقات معينة.
للعثور على المحرف الخاص نفسه، مثل النقطة، إمّا أن تهرّبه باستخدام % أو أن تعطّل الأنماط باستخدام بحث عادي (1 للبدء من المحرف الأول، وtrue للبحث العادي):
print(string.find("v1.5", "%.")) -- الناتج: 3 3
print(string.find("v1.5", ".", 1, true)) -- الناتج: 3 3
print(string.find("v1.5", ".")) -- الناتج: 1 1 (تطابق . أي محرف)التحدي
سهلاكتب دالة startsWithLetter تأخذ text وتُرجع ما إذا كانت السلسلة تبدأ بحرف.
استخدم string.find() مع علامة البداية ^ وفئة الأحرف %a للتحقق مما إذا كانت السلسلة تبدأ بحرف.
المعاملات:
text(سلسلة): السلسلة المطلوب التحقق من صحتها
القيمة المُعادة: true إذا كانت السلسلة تبدأ بحرف، وfalse خلاف ذلك (قيمة منطقية)
جرّب بنفسك
function startsWithLetter(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 عبر الإنترنت