איטרציה באמצעות string.gmatch()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 39 מתוך 54.
בעוד ש-string.match() מוצאת את ההופעה הראשונה של תבנית, מה אם צריך למצוא את כל ההתאמות במחרוזת? הפונקציה string.gmatch() פותרת זאת באמצעות החזרת איטרטור שאפשר להשתמש בו בלולאת for כדי לעבד כל התאמה בזו אחר זו.
התחביר הבסיסי נראה כך:
for match in string.gmatch(text, pattern) do
-- עבד כל התאמה
endהנה דוגמה שמוצאת את כל המספרים במחרוזת:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- פלט:
-- 3
-- 5התבנית %d+ מתאימה לספרה אחת או יותר, והלולאה רצה פעם אחת עבור כל מספר שנמצא.
אפשר גם לחלץ את כל המילים ממשפט:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- פלט:
-- Lua
-- is
-- a
-- powerful
-- languageאתגר
קלכתבו פונקציה extractHashtags שמקבלת text ומחזירה את כל ההאשטגים שנמצאו בטקסט, כל אחד בשורה נפרדת.
השתמשו ב-string.gmatch() כדי למצוא את כל ההאשטגים בטקסט. האשטג מתחיל ב-# ואחריו אות אחת או יותר.
לוגיקה:
- השתמשו ב-
string.gmatch()עם התבנית"#%a+"כדי למצוא את כל ההאשטגים - עברו על כל התאמה ואספו אותן
- חברו את כל ההאשטגים באמצעות תווי שורה חדשה (
\n) - אם לא נמצאו האשטגים, החזירו מחרוזת ריקה
פרמטרים:
text(מחרוזת): הטקסט שבו יש לחפש האשטגים
ערך מוחזר: כל ההאשטגים שנמצאו, כל אחד בשורה נפרדת. אם לא קיימים האשטגים, החזירו מחרוזת ריקה (מחרוזת)
נסו בעצמכם
function extractHashtags(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 אונליין