Iterowanie po łańcuchach znaków, cz. 1
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 71 z 86.
Podobnie jak tablice, ciągi znaków w Swift są sekwencjami znaków, po których możesz iterować. Dzięki temu możesz łatwo przetwarzać tekst znak po znaku za pomocą dobrze znanej pętli for-in.
Gdy iterujesz po ciągu znaków, Swift podaje Ci kolejno każdy znak:
let word = "Hello"
for char in word {
print(char)
}
// H
// e
// l
// l
// oKażdy char w pętli jest typu Character, a nie String. To rozróżnienie ma znaczenie, gdy musisz porównywać lub modyfikować pojedyncze znaki.
Możesz użyć tej techniki do analizowania tekstu, na przykład do liczenia określonych znaków:
let message = "banana"
var countA = 0
for char in message {
if char == "a" {
countA += 1
}
}
print(countA) // 3Zauważ, że porównując znak, używamy pojedynczego znaku w cudzysłowie, na przykład "a". Swift automatycznie traktuje go jako Character podczas porównywania z innym znakiem.
Wyzwanie
ŁatwyUtwórz funkcję countVowels, która przyjmuje text i zwraca łączną liczbę samogłosek w ciągu znaków.
Przejdź przez każdy znak w ciągu znaków i policz, ile z nich to samogłoski (a, e, i, o, u). Uwzględnij samogłoski zapisane zarówno małymi, jak i wielkimi literami.
Parametry:
text(String): Ciąg znaków do analizy
Zwraca: Łączną liczbę samogłosek znalezionych w ciągu znaków (Int)
Przykład: Jeśli text ma wartość "Hello World", funkcja powinna zwrócić 3 (samogłoski to e, o, o).
Spróbuj swoich sił
func countVowels(text: String) -> Int {
// Wpisz 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