string.match()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 38 מתוך 54.
בעוד ש־string.find() מציינת לך היכן תבנית מופיעה במחרוזת, לפעמים צריך לחלץ את הטקסט עצמו שתאם לה. כאן נכנסת לתמונה string.match(), והיא נעשית עוצמתית עוד יותר בשילוב עם לכידות.
לכידות מאפשרות לך לסמן חלקים מסוימים בתבנית שברצונך לחלץ. יוצרים לכידה על ידי עטיפת חלק מהתבנית בסוגריים (). כאשר string.match() מוצאת התאמה, היא מחזירה את הטקסט שנלכד במקום רק את המיקום.
הנה דוגמה פשוטה לחילוץ מספר ממחרוזת:
local text = "Player score: 100"
local number = string.match(text, "%d+")
print(number) -- פלט: 100התבנית %d+ פירושה "ספרה אחת או יותר". + הוא משנה שמחפש התאמה לתו אחד או יותר ממחלקת התווים הקודמת, ומאפשר לך ללכוד מספרים בני כמה ספרות.
אפשר להשתמש בלכידות כדי לחלץ חלקים מסוימים מתבנית מורכבת יותר:
local message = "User: Alice sent a message"
local username = string.match(message, "User: (%a+)")
print(username) -- פלט: Aliceכאן, הסוגריים שמסביב ל־%a+ אומרים ל־Lua ללכוד את רצף האותיות שמופיע אחרי "User: ". שאר התבנית עוזר לאתר את המיקום הנכון, אבל רק החלק שנלכד מוחזר.
אם לתבנית שלך יש כמה קבוצות לכידה, string.match() מחזירה את כולן כערכים נפרדים, שאפשר להקצות למספר משתנים בבת אחת.
אתגר
קלכתבו פונקציה extractPrice שמקבלת את text ומחזירה את ערך המחיר שנמצא במחרוזת.
השתמשו ב-string.match() עם תבנית לכידה כדי לחלץ את המחיר המספרי שמופיע אחרי סימן הדולר. התבנית צריכה ללכוד ספרה אחת או יותר באמצעות %d+.
פרמטרים:
text(מחרוזת): מחרוזת המכילה מחיר בפורמט "Price: $XX"
ערך מוחזר: המחיר המספרי כמחרוזת (מחרוזת)
נסו בעצמכם
function extractPrice(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 אונליין