Menu
Coddy logo textTech

מבוא לתבניות מחרוזת

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 36 מתוך 54.

כשביצעת שימוש ב־string.gsub() בשיעור הקודם, חיפשת טקסט מדויק כמו רווחים או מילים מסוימות. אבל מה אם צריך למצוא "כל ספרה" או "כל אות" בלי לדעת מהו התו המדויק? כאן נכנסות לתמונה תבניות מחרוזת.

תבניות מחרוזת ב-Lua הן דרך לתאר איזה סוג של טקסט מחפשים, במקום את הטקסט המדויק עצמו. הן פשוטות יותר מביטויים רגולריים, אך חזקות מספיק לרוב משימות עיבוד הטקסט.

Lua מספקת קודים מיוחדים שנקראים מחלקות תווים, המתאימים לקטגוריות של תווים. הנה הנפוצים ביותר:

%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 (מחרוזת): הטקסט שיש לבדוק אם הוא מכיל ספרות

ערך מוחזר: true אם הטקסט מכיל לפחות ספרה אחת, false אחרת (בוליאני)

נסו בעצמכם

function containsDigit(text)
    -- כתבו כאן את הקוד
end
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Lua אונליין