Как выполнить итерацию по строке в Swift?

«Как выполнить итерацию по строке в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, строка (String) в Swift является коллекцией символов (Character), поэтому по ней можно итерироваться.

Основные способы:

  1. Прямая итерация по символам:

    let greeting = "Привет, мир!"
    for character in greeting {
    print(character) // Каждый Character (графем-кластер)
    }
  2. С использованием индексов (рекомендуется для модификации):

    for index in greeting.indices {
    print(greeting[index]) // Безопасный доступ по индексу
    }
  3. С получением индексов через enumerated():

    for (offset, character) in greeting.enumerated() {
    print("Позиция (offset): (character)")
    }

Ключевые особенности строк в Swift:

  • Строки работают с Unicode, поэтому один Character может состоять из нескольких Unicode скаляров
  • Не используйте целочисленные индексы — это вызовет ошибку компиляции
  • Для доступа по позиции используйте String.Index:
    let firstIndex = greeting.startIndex
    let fifthIndex = greeting.index(firstIndex, offsetBy: 4)
    print(greeting[fifthIndex]) // "т"
  • Для производительности при многократном доступе конвертируйте строку в массив: Array(greeting)