В Swift это еще проще:
let string : String = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
println(characters)
// [H, e, l, l, o, , 🐶, 🐮, , 🇩🇪]
Здесь используются факты, которые
- an
Arrayможет быть создан из a SequenceType, и
Stringсоответствует SequenceTypeпротоколу, а его генератор последовательности перечисляет символы.
А поскольку строки Swift полностью поддерживают Unicode, это работает даже с символами за пределами «базовой многоязычной плоскости» (такими как) и с расширенными кластерами графем (такими как 🇩🇪, который фактически состоит из двух скаляров Unicode).
Обновление: Начиная с Swift 2, String больше не соответствует
SequenceType, но charactersсвойство предоставляет последовательность символов Unicode:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string.characters)
print(characters)
Это также работает в Swift 3 .
Обновление: Начиная с Swift 4, String это (снова) набор его
Characters:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]
let joined = ", ".join(characters);) массив приводит к'String' is not identical to 'Character'ошибке?