Menu
Coddy logo textTech

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() מחזירה את כולן כערכים נפרדים, שאפשר להקצות למספר משתנים בבת אחת.

challenge icon

אתגר

קל

כתבו פונקציה extractPrice שמקבלת את text ומחזירה את ערך המחיר שנמצא במחרוזת.

השתמשו ב-string.match() עם תבנית לכידה כדי לחלץ את המחיר המספרי שמופיע אחרי סימן הדולר. התבנית צריכה ללכוד ספרה אחת או יותר באמצעות %d+.

פרמטרים:

  • text (מחרוזת): מחרוזת המכילה מחיר בפורמט "Price: $XX"

ערך מוחזר: המחיר המספרי כמחרוזת (מחרוזת)

נסו בעצמכם

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

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

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

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