Menu
CoddyTech

string.find()

חלק מהיחידה יסודות במסלול ה-Lua של Coddy. שיעור 48 מתוך 90.

הפונקציה string.find() היא כלי רב עוצמה לחיפוש בתוך מחרוזות. היא מאפשרת לך לחפש מחרוזת קטנה יותר (שנקראת תבנית) בתוך מחרוזת גדולה יותר ומציינת לך בדיוק היכן היא נמצאה.

זוהי התחביר הבסיסי:

string.find(text, pattern)

כאשר string.find() מוצאת בהצלחה את התבנית, היא מחזירה שני מספרים: מיקום ההתחלה ומיקום הסיום של ההתאמה. אם התבנית לא נמצאת, היא מחזירה nil.

הנה דוגמה פשוטה:

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- פלט: 5 12

בדוגמה הזאת, המילה "treasure" מתחילה במיקום 5 ומסתיימת במיקום 12 במשפט.

דבר אחד שכדאי לדעת: הטקסט שמחפשים הוא תבנית, ולא טקסט רגיל. לכמה תווים יש משמעויות מיוחדות בתבניות: . % - + * ? [ ] ^ $ ( ). תלמדו עליהם בהמשך הקורס. אותיות, ספרות ורווחים מתאימים לעצמם, כמו בדוגמה שלמעלה, אבל תו מיוחד יכול להתאים ליותר ממה שהתכוונתם:

print(string.find("Score: 105", "1.5"))  -- פלט: 8 10 (ה־. התאים ל־0)

כדי לחפש את הטקסט בדיוק כפי שהוא כתוב, הוסיפו שני ארגומנטים נוספים: 1 (התחילו מהתו הראשון) ו-true (חיפוש רגיל, ללא תווים מיוחדים):

print(string.find("Score: 105", "1.5", 1, true))   -- פלט: nil
print(string.find("Version 1.5", "1.5", 1, true))  -- פלט: 9 11
challenge icon

אתגר

קל

צרו גלאי של הודעות סודיות שמחפש מילת קוד מוסתרת בתוך הודעת טקסט ארוכה יותר. הכריזו על משתנה בשם message והשימו בו את הערך "The ancient treasure lies beneath the old oak tree". השתמשו בפונקציה string.find() כדי לחפש בהודעה את המילה "treasure" ושמרו את מיקומי ההתחלה והסיום במשתנים בשם startPos ו־endPos. הדפיסו את שני ערכי המיקום בשורות נפרדות.

נסו בעצמכם

-- הכריזו על המשתנה message
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: כתבו כאן את הקוד שלכם כדי למצוא את המילה "treasure" ולשמור את המיקומים

-- הדפיסו את המיקומים
print(startPos)
print(endPos)
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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