0Pricing
Swift Academy · Урок

Подсчёт и перебор символов

Корректно перебирайте текст, включая эмодзи и сочетания с диакритикой.

«Подсчёт и перебор символов» — бесплатный урок Swift Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Подсчёт символов

Свойство count типа String возвращает количество значений Character, то есть количество символов, воспринимаемых пользователем.

let word = "Swift"
print(word.count)

Количество соответствует видимым символам

Поскольку Swift считает кластеры графем, буква с диакритическим знаком или emoji считается одним символом — именно так её видит читатель.

let cafe = "caf\u{e9}"
print(cafe.count)

Корректный подсчёт emoji

Один emoji считается одним символом, даже если внутри он занимает несколько байтов и скаляров.

let s = "Hi\u{1F600}"
print("Characters:", s.count)

Сложные emoji тоже считаются одним символом

Даже emoji из нескольких скаляров, например изображение семьи или флаг, считаются одним Character, в отличие от наивного подсчёта байтов или скаляров.

let flag = "\u{1F1FA}\u{1F1F8}"
print("Characters:", flag.count)
print("Scalars:", flag.unicodeScalars.count)

Перебор с помощью for-in

Цикл for-in по строке последовательно посещает каждый Character, корректно переходя через кластеры графем.

for ch in "a\u{1F600}b" {
    print(ch)
}

Подсчёт определённых символов

Чтобы подсчитать вхождения определённого символа, объедините перебор со счётчиком или используйте filter.

let text = "banana"
let aCount = text.filter { $0 == "a" }.count
print("a appears:", aCount)

Проверка на пустоту

Предпочитайте isEmpty сравнению count с нулём: так код понятнее и иногда работает быстрее.

let s = ""
print(s.isEmpty)
print("hello".isEmpty)

Индексация основана не на целых числах

Поскольку символы имеют разный размер, строки Swift используют String.Index, а не целочисленные индексы.

let word = "Swift"
let first = word[word.startIndex]
print(first)

Перебор с индексами

Если нужны и позиция, и символ, можно выполнять перебор с помощью indices.

let word = "Hi"
for i in word.indices {
    print(word[i])
}

Перебор с числовыми смещениями

Используйте enumerated(), чтобы получать возрастающее целочисленное смещение вместе с каждым символом.

for (i, ch) in "abc".enumerated() {
    print(i, ch)
}

Зачем нужен корректный подсчёт

Подсчёт кластеров графем позволяет интуитивно выполнять проверку длины, обрезку и проверку корректности для интернационального текста и emoji.

let name = "Jose\u{301}"
print("Visible length:", name.count)

Быстрая проверка

Вспомните, как Swift считает один emoji.

Итоги: подсчёт и перебор символов

Вы узнали, что count возвращает количество кластеров графем, поэтому emoji и буквы с диакритическими знаками считаются одним символом, что for-in корректно перебирает символы, что строки используют String.Index, а не целые числа, и что enumerated() предоставляет смещения.

let s = "ab\u{1F600}"
print("Count:", s.count)
for (i, ch) in s.enumerated() { print(i, ch) }

Часто задаваемые вопросы

Урок «Подсчёт и перебор символов» бесплатный?

Да — полный текст урока «Подсчёт и перебор символов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Подсчёт и перебор символов»?

Корректно перебирайте текст, включая эмодзи и сочетания с диакритикой. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Подсчёт и перебор символов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Символы и графемные кластеры
  2. Скалярные значения Unicode и кодовые точки
  3. Подсчёт и перебор символов
  4. Представления кодировок: utf8, utf16, unicodeScalars
← Назад к Swift Academy