Zliczanie i iterowanie po znakach
Prawidłowe iterowanie po tekście zawierającym emoji i znaki diakrytyczne.
Zliczanie i iterowanie po znakach to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Zliczanie znaków
Właściwość count obiektu String zwraca liczbę wartości Character, która odpowiada liczbie znaków postrzeganych przez użytkownika.
let word = "Swift"
print(word.count)Liczba odpowiada widocznym znakom
Ponieważ Swift zlicza klastry grafemów, litera akcentowana lub emoji jest liczone jako jeden znak, zgodnie z tym, co widzi użytkownik.
let cafe = "caf\u{e9}"
print(cafe.count)Prawidłowe zliczanie emoji
Pojedyncze emoji jest liczone jako jeden znak, mimo że wewnętrznie zajmuje wiele bajtów i skalarów.
let s = "Hi\u{1F600}"
print("Characters:", s.count)Złożone emoji nadal liczą się jako jeden znak
Nawet emoji złożone z wielu skalarów, takie jak emoji przedstawiające rodzinę lub flagę, jest liczone jako pojedynczy Character, w przeciwieństwie do naiwnego zliczania bajtów lub skalarów.
let flag = "\u{1F1FA}\u{1F1F8}"
print("Characters:", flag.count)
print("Scalars:", flag.unicodeScalars.count)Iterowanie za pomocą for-in
Pętla for-in przechodząca po łańcuchu znaków odwiedza kolejno każdy obiekt Character, prawidłowo przechodząc przez klastry grafemów.
for ch in "a\u{1F600}b" {
print(ch)
}Zliczanie określonych znaków
Aby zliczyć wystąpienia konkretnego znaku, można połączyć iterowanie z licznikiem lub użyć filter.
let text = "banana"
let aCount = text.filter { $0 == "a" }.count
print("a appears:", aCount)Sprawdzanie, czy łańcuch jest pusty
Należy preferować isEmpty zamiast porównywania count z zerem; takie rozwiązanie jest czytelniejsze i może działać szybciej.
let s = ""
print(s.isEmpty)
print("hello".isEmpty)Indeksowanie nie opiera się na liczbach całkowitych
Ponieważ znaki mogą mieć różny rozmiar, łańcuchy znaków w Swift używają String.Index zamiast indeksów całkowitoliczbowych.
let word = "Swift"
let first = word[word.startIndex]
print(first)Iterowanie za pomocą indeksów
Gdy potrzebna jest zarówno pozycja, jak i znak, można iterować za pomocą indices.
let word = "Hi"
for i in word.indices {
print(word[i])
}Numerowanie za pomocą przesunięć
Za pomocą enumerated() można uzyskać narastające przesunięcie całkowitoliczbowe wraz z każdym znakiem.
for (i, ch) in "abc".enumerated() {
print(i, ch)
}Dlaczego prawidłowe zliczanie ma znaczenie
Zliczanie klastrów grafemów sprawia, że sprawdzanie długości, obcinanie i walidacja działają intuicyjnie dla tekstów międzynarodowych i emoji.
let name = "Jose\u{301}"
print("Visible length:", name.count)Szybkie sprawdzenie
Proszę przypomnieć sobie, jak Swift zlicza pojedyncze emoji.
Podsumowanie: zliczanie i iterowanie po znakach
Dowiedzieli się Państwo, że count zwraca liczbę klastrów grafemów, więc emoji i znaki akcentowane są liczone jako jeden znak, że for-in prawidłowo iteruje po znakach, że łańcuchy używają String.Index, a nie liczb całkowitych, oraz że enumerated() udostępnia przesunięcia.
let s = "ab\u{1F600}"
print("Count:", s.count)
for (i, ch) in s.enumerated() { print(i, ch) }Często zadawane pytania
Czy lekcja „Zliczanie i iterowanie po znakach” jest bezpłatna?
Tak — pełny tekst „Zliczanie i iterowanie po znakach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zliczanie i iterowanie po znakach”?
Prawidłowe iterowanie po tekście zawierającym emoji i znaki diakrytyczne. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Zliczanie i iterowanie po znakach”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Znaki i klastry grafemów
- Skalary Unicode i punkty kodowe
- Zliczanie i iterowanie po znakach
- Widoki kodowania: utf8, utf16, unicodeScalars