string.find()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 37 מתוך 54.
עכשיו, כשאתה מבין מחלקות תווים, אתה יכול להשתמש בהן עם string.find() כדי לחפש תבניות במקום טקסט מדויק. כך נפתחות בפניך אפשרויות רבות לאימות ולניתוח של טקסט.
הפונקציה string.find() פועלת עם תבניות באותו אופן שבו היא פועלת עם מחרוזות מילוליות. היא מחזירה את המיקום שבו התבנית מופיעה לראשונה:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- פלט: 5כך מוצאים את הספרה הראשונה במחרוזת, שנמצאת במיקום 5. אפשר גם לחפש את ההפך באמצעות מחלקות תווים באותיות גדולות:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- פלט: 1כאן, %D מתאים לכל תו שאינו ספרה, ולכן הוא מוצא את האות הראשונה במיקום 1.
משימת אימות נפוצה היא לבדוק אם מחרוזת מתחילה בתבנית מסוימת. אפשר להשתמש בעוגן ^ בתחילת תבנית כדי להתאים רק לתחילת המחרוזת:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endהתבנית הזאת בודקת אם המחרוזת מתחילה באות, ולכן היא שימושית לאימות קלט כשנדרשים פורמטים מסוימים.
כדי למצוא תו מיוחד עצמו, כגון נקודה, אפשר להקדים לו את % או לכבות את התבניות באמצעות חיפוש פשוט (1 כדי להתחיל בתו הראשון, true לחיפוש פשוט):
print(string.find("v1.5", "%.")) -- פלט: 3 3
print(string.find("v1.5", ".", 1, true)) -- פלט: 3 3
print(string.find("v1.5", ".")) -- פלט: 1 1 (. מתאים לכל תו)אתגר
קלכתבו פונקציה בשם startsWithLetter שמקבלת את text ומחזירה האם המחרוזת מתחילה באות.
השתמשו ב־string.find() עם העוגן ^ ועם מחלקת התווים %a כדי לבדוק אם המחרוזת מתחילה באות.
פרמטרים:
text(מחרוזת): המחרוזת לאימות
ערך מוחזר: true אם המחרוזת מתחילה באות, false אחרת (בוליאני)
נסו בעצמכם
function startsWithLetter(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 אונליין