0Pricing
Swift Academy · Lekcja

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

  1. Znaki i klastry grafemów
  2. Skalary Unicode i punkty kodowe
  3. Zliczanie i iterowanie po znakach
  4. Widoki kodowania: utf8, utf16, unicodeScalars
← Powrót do Swift Academy