W Swift jest jeszcze łatwiej:
let string : String = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
println(characters)
// [H, e, l, l, o, , 🐶, 🐮, , 🇩🇪]
Wykorzystuje to fakt, że
Array
mogą być utworzone z SequenceType
, i
String
jest zgodny z SequenceType
protokołem, a jego generator sekwencji wylicza znaki.
A ponieważ łańcuchy Swift mają pełne wsparcie dla Unicode, działa to nawet ze znakami spoza „Basic Multilingual Plane” (np. 🐶) oraz z rozszerzonymi klastrami grafemowymi (takimi jak 🇩🇪, który w rzeczywistości składa się z dwóch skalarów Unicode).
Aktualizacja: od wersji Swift 2 String
nie jest już zgodny z
SequenceType
, ale characters
właściwość zapewnia sekwencję znaków Unicode:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string.characters)
print(characters)
Działa to również w Swift 3 .
Aktualizacja: Począwszy od Swift 4, String
jest (ponownie) zbiorem jego
Character
s:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]
let joined = ", ".join(characters);
) tablicy powoduje'String' is not identical to 'Character'
błąd?