Iterowanie po łańcuchach znaków, cz. 2
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 72 z 86.
Tak jak użyliśmy enumerated() z tablicami, aby uzyskać zarówno indeks, jak i element, możemy zrobić to samo z ciągami znaków. Jest to przydatne, gdy podczas iterowania musisz znać pozycję każdego znaku.
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tTa technika jest przydatna przy tworzeniu nowych ciągów znaków na podstawie pozycji znaków. Możesz na przykład chcieć zachować tylko znaki na parzystych indeksach:
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceZauważ, że przed dodaniem konwertujemy char na String za pomocą String(char). Jest to konieczne, ponieważ result jest typu String i nie można bezpośrednio dodać do niego wartości typu Character za pomocą operatora +=.
Wyzwanie
ŁatwyNapisz funkcję extractOddIndexChars, która przyjmuje text i zwraca nowy ciąg zawierający tylko znaki o nieparzystych indeksach.
Użyj enumerated(), aby przejść przez ciąg i zbudować wynik zawierający znaki, których indeks jest nieparzysty (1, 3, 5 itd.).
Parametry:
text(String): Ciąg wejściowy do przetworzenia
Zwraca: Ciąg zawierający tylko znaki o nieparzystych indeksach (String)
Przykład: Jeśli text ma wartość "abcdefg", funkcja powinna zwrócić "bdf" (znaki o indeksach 1, 3 i 5).
Spróbuj swoich sił
func extractOddIndexChars(text: String) -> String {
// Napisz kod tutaj
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne13Iterowanie po sekwencjach
Iterowanie po elementachMetoda enumerateIterowanie po łańcuchach znaków, cz. 1Iterowanie po łańcuchach znaków, cz. 22Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift