在Swift中甚至更容易:
let string : String = "Hello "
let characters = Array(string)
println(characters)
// [H, e, l, l, o, , , , , ]
这里用到以下事实:
- 可以从
SequenceType
创建Array
,并且
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
的集合:
let string = "Hello "
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "", "", " ", ""]
let joined = ", ".join(characters);
)数组会导致'String' is not identical to 'Character'
错误? - Mohamad", ".join(...)
期望的却是一个字符串数组。下面devxoul的答案展示了如何将其拆分成字符串数组。 - Martin Rcharacters
是一个集合,也是字符串字符的视图。从字符创建数组会复制一份。当然可以直接访问这些字符:for i in string.characters.indices { print(string.characters[i]) }
或者只需for c in string.characters { print(c) }
。 - Martin R