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

مقدمة في أنماط النصوص

جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy — الدرس 36 من 54.

عندما استخدمت string.gsub() في الدرس السابق، بحثت عن نص محدد مثل المسافات أو كلمات معينة. ولكن ماذا لو كنت بحاجة إلى العثور على "أي رقم" أو "أي حرف" دون معرفة الحرف الفعلي؟ هنا يأتي دور أنماط النصوص (string patterns).

تعد أنماط السلاسل النصية (String patterns) في Lua وسيلة لوصف نوع النص الذي تبحث عنه، بدلاً من النص الفعلي نفسه. فهي أبسط من التعبيرات النمطية (regular expressions) ولكنها قوية بما يكفي لمعظم مهام معالجة النصوص.

توفر Lua رموزًا خاصة تسمى فئات الأحرف (character classes) التي تطابق فئات معينة من الأحرف. إليك أكثرها شيوعًا:

%d  -- تطابق أي رقم (0-9)
%a  -- تطابق أي حرف (a-z, A-Z)
%s  -- تطابق أي مسافة بيضاء (مسافة، علامة جدولة، سطر جديد)
%w  -- تطابق أي حرف أبجدي رقمي (أحرف وأرقام)
%p  -- تطابق أي علامة ترقيم

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

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- المخرجات: 6

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

challenge icon

التحدي

سهل

اكتب دالة containsDigit تأخذ text وتعيد ما إذا كان النص يحتوي على رقم واحد على الأقل.

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

المعاملات:

  • text (string): النص المراد فحصه بحثاً عن أرقام

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

جرّب بنفسك

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

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

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