У Swift ще простіше:
let string : String = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
println(characters)
// [H, e, l, l, o, , 🐶, 🐮, , 🇩🇪]
Тут використовуються факти, які
Array
може бути створений з 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'
помилки?