איטרציה על מחרוזות חלק 2
חלק מהיחידה יסודות במסלול ה-Swift של Coddy. שיעור 72 מתוך 86.
בדיוק כפי שהשתמשנו ב־enumerated() עם מערכים כדי לקבל גם את האינדקס וגם את האיבר, אפשר לעשות אותו דבר עם מחרוזות. זה שימושי כשצריך לדעת את המיקום של כל תו במהלך האיטרציה.
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tהטכניקה הזאת שימושית כשיוצרים מחרוזות חדשות על סמך מיקומי תווים. לדוגמה, ייתכן שתרצו להשאיר רק תווים במיקומים זוגיים:
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceשימו לב שאנחנו ממירים char ל־String באמצעות String(char) לפני שמוסיפים אותו. זה נחוץ מכיוון ש־result הוא String, ואי אפשר להוסיף אליו ישירות Character באמצעות האופרטור +=.
אתגר
קלכתוב פונקציה extractOddIndexChars שמקבלת text ומחזירה מחרוזת חדשה שמכילה רק את התווים שבאינדקסים אי־זוגיים.
השתמש ב־enumerated() כדי לעבור על המחרוזת ולבנות תוצאה שמכילה את התווים שהאינדקס שלהם אי־זוגי (1, 3, 5 וכן הלאה).
פרמטרים:
text(String): מחרוזת הקלט לעיבוד
ערך מוחזר: מחרוזת שמכילה רק את התווים שבאינדקסים אי־זוגיים (String)
דוגמה: אם text הוא "abcdefg", הפונקציה צריכה להחזיר "bdf" (התווים באינדקסים 1, 3 ו־5).
נסו בעצמכם
func extractOddIndexChars(text: String) -> String {
// כתבו כאן קוד
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסי
פונקציית ההדפסהאינטרפולציה של מחרוזותקלט באמצעות ReadLineהמרת טיפוסיםחזרה – עד 120חזרה – אמת או שקר3ערכים אופציונליים
מהם ערכים אופציונלייםשליפת ערך באמצעות If LetGuard Letאופרטור איחוד עם Nilסיכום – שליפה בטוחה של ערך9לולאות
לולאת For-Inלולאת Whileלולאת Repeat-WhileBreakContinueחזרה – עצרתטווחים בלולאותלולאה מקוננתחזרה – קלט דינמיתרגלו בעצמכם: Swift אונליין