Ответ
Тип String в Swift соответствует протоколу Collection, поэтому его можно итерировать в цикле for-in, получая на каждой итерации объект типа Character.
Базовый пример:
let message = "Hello"
for character in message {
print(character) // Выведет: H, e, l, l, o (каждый на новой строке)
}
Важные особенности и лучшие практики:
- Unicode-корректность:
Characterпредставляет собой расширенный кластер графемы (extended grapheme cluster). Это значит, что один «символ» может состоять из нескольких скаляров Unicode (например, эмодзи"👨👩👧👦"или буква с акцентом"é"). Цикл обрабатывает это корректно. - Доступ по индексу: Для прямого доступа по индексу используйте специфичные для строки индексы (
String.Index), а не целые числа.let str = "Swift" let firstChar = str[str.startIndex] // 'S' let thirdIndex = str.index(str.startIndex, offsetBy: 2) let thirdChar = str[thirdIndex] // 'i' - Получение числового индекса: Используйте метод
enumerated().for (index, character) in "Swift".enumerated() { print("Index (index): (character)") } // Output: // Index 0: S // Index 1: w // Index 2: i // Index 3: f // Index 4: t - Преобразование в массив: Для многократного индексирования иногда эффективно преобразовать строку в массив символов.
let charactersArray = Array("Hello") // Тип [Character]