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אתגר
קלצרו גלאי של הודעות סודיות שמחפש מילת קוד מוסתרת בתוך הודעת טקסט ארוכה יותר. הכריזו על משתנה בשם 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)השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים 2: יחסים ולוגיקה
אופרטורי שוויוןאופרטורים יחסייםהאופרטור 'and'האופרטור 'or'האופרטור 'not'הערכה בקצר חשמליערכים אמתיים ושקרייםסיכום – לוגיקה פשוטה10טבלאות חלק 1: בסגנון רשימה
מהי טבלה?יצירת טבלהגישה לאיברים לפי אינדקסשינוי איברים לפי אינדקסאופרטור האורך '#'table.insert()table.remove()סיכום - ניהול חברי החבורה13פרויקט: חנות שיקויים פשוטה
הגדרת הפרויקטהוספת שיקוי2משתנים וסוגי נתונים
מהו משתנה?מספריםמחרוזותערכים בוליאנייםהערך 'nil'הפונקציה type()מוסכמות למתן שמותסיכום – פרופיל דמות5פלט בסיסי
הדפסת ערכים מילולייםהדפסת משתניםהדפסת ערכים מרוביםשילוב מחרוזות ומשתניםהפונקציה tostring()קלטהמרת טיפוסיםסיכום – דוח מצבסיכום – עד 1208יסודות עיבוד מחרוזות
string.len()string.upper ו־string.lowerstring.sub()string.rep()string.find()חזרה – עיצוב שם משתמש3אופרטורים 1: חשבון ושרשור
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקהשרשור מחרוזותקדימות אופרטוריםסיכום – חישובים פשוטים9יסודות הפונקציות
הגדרת פונקציהקריאה לפונקציהפונקציות עם פרמטריםפונקציות עם כמה פרמטריםהפקודה 'return'סיכום – מחשבון שטחתרגלו בעצמכם: קומפיילר Lua אונליין