החלפה באמצעות string.gsub()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 35 מתוך 54.
כשעובדים עם מחרוזות, לעיתים קרובות צריך למצוא טקסט ולהחליף אותו. הפונקציה string.gsub() של Lua מקלה על כך באמצעות החלפה גלובלית: מציאת כל המופעים של תבנית והחלפתם במשהו אחר.
התחביר הבסיסי מקבל שלושה ארגומנטים: המחרוזת המקורית, התבנית לחיפוש וטקסט ההחלפה:
local result = string.gsub(originalString, pattern, replacement)הנה דוגמה פשוטה שמחליפה את כל הרווחים בקווים תחתונים:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- פלט: hello_world_from_luaהפונקציה מחזירה שני ערכים: המחרוזת ששונתה ומספר ההחלפות שבוצעו. אפשר ללכוד את שניהם אם צריך:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- פלט: baz bar baz
print(count) -- פלט: 2בניגוד לחלק מפונקציות המחרוזת שמוצאות רק את ההתאמה הראשונה, string.gsub() מחליפה כברירת מחדל כל מופע, ולכן היא מושלמת למשימות ניקוי טקסט כמו הסרת תווים לא רצויים או האחדת העיצוב.
אתגר
קלכתבו פונקציה cleanText שמקבלת text ומחזירה גרסה נקייה שבה כל הרווחים מוחלפים בקווים תחתונים.
השתמשו ב־string.gsub() כדי להחליף כל תו רווח בטקסט בתו קו תחתון.
פרמטרים:
text(מחרוזת): הטקסט לניקוי
ערך מוחזר: הטקסט שבו כל הרווחים מוחלפים בקווים תחתונים (מחרוזת)
נסו בעצמכם
function cleanText(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 אונליין