Menu
CoddyTech

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 (. מתאים לכל תו)
challenge icon

אתגר

קל

כתבו פונקציה בשם startsWithLetter שמקבלת את text ומחזירה האם המחרוזת מתחילה באות.

השתמשו ב־string.find() עם העוגן ^ ועם מחלקת התווים %a כדי לבדוק אם המחרוזת מתחילה באות.

פרמטרים:

  • text (מחרוזת): המחרוזת לאימות

ערך מוחזר: true אם המחרוזת מתחילה באות, false אחרת (בוליאני)

נסו בעצמכם

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

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

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

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