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

string.find()

جزء من قسم Logic & Flow في رحلة 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

يتحقق هذا النمط مما إذا كانت السلسلة النصية تبدأ بحرف، مما يجعله مفيداً للتحقق من صحة المدخلات حيث تكون هناك حاجة إلى تنسيقات معينة.

challenge icon

التحدي

سهل

اكتب دالة startsWithLetter تأخذ text وتعيد ما إذا كانت السلسلة النصية تبدأ بحرف.

استخدم string.find() مع المرساة ^ وفئة الأحرف %a للتحقق مما إذا كانت السلسلة النصية تبدأ بحرف.

المعاملات:

  • text (string): السلسلة النصية المراد التحقق من صحتها

المرجعات: true إذا كانت السلسلة النصية تبدأ بحرف، و false خلاف ذلك (boolean)

ورقة مرجعية

استخدم string.find() مع فئات الأحرف للبحث عن الأنماط في النصوص. وهي تعيد الموضع الذي يتطابق فيه النمط لأول مرة:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- Output: 5

تطابق فئات الأحرف الكبيرة العكس (الأحرف غير المتطابقة):

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- Output: 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

جرّب بنفسك

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

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

جميع دروس Logic & Flow