В 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
это (снова) набор его
Character
s:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]
let joined = ", ".join(characters);
) массив приводит к'String' is not identical to 'Character'
ошибке?