מבוא לתבניות מחרוזת
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-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 מתאים לכל תו שאינו אות.
אתגר
קלכתבו פונקציה containsDigit שמקבלת את text ומחזירה האם הטקסט מכיל לפחות ספרה אחת.
השתמשו ב־string.find() עם מחלקת התווים %d כדי לבדוק אם יש מחרוזת ספרה כלשהי.
פרמטרים:
text(מחרוזת): הטקסט שיש לבדוק אם הוא מכיל ספרות
ערך מוחזר: true אם הטקסט מכיל לפחות ספרה אחת, false אחרת (בוליאני)
נסו בעצמכם
function containsDigit(text)
-- כתבו כאן את הקוד
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות4מבוא למטא־טבלאות
מהי מטא־טבלה?setmetatable ו־getmetatableמטא־מתודת __indexמטא־מתודת __newindexמטא־מתודת __tostringמטא־מתודות אריתמטיות חלק 1מטא־מתודות אריתמטיות חלק 2סיכום — טבלה לקריאה בלבד7מניפולציה מתקדמת של מחרוזות
החלפה באמצעות string.gsub()מבוא לתבניות מחרוזתstring.find()string.match()איטרציה באמצעות string.gmatch()סיכום – מנתח קובצי יומן2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין