如何在Swift中将字符串“ Hello”转换为数组[“ H”,“ e”,“ l”,“ l”,“ o”]?
在Objective-C中,我使用了以下方法:
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]]; for (int i=0; i < [myString length]; i++) { NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]]; [characters addObject:ichar]; }
在Swift中甚至更容易:
let string : String = "Hello 🐶🐮 🇩🇪" let characters = Array(string) println(characters) // [H, e, l, l, o, , 🐶, 🐮, , 🇩🇪]
这利用了以下事实:
Array
SequenceType
String
而且由于Swift字符串完全支持Unicode,所以即使在“基本多语言平面”之外的字符(例如🐶)和扩展的字素簇(例如🇩🇪,它实际上由 两个 Unicode标量组成)下,该字符串也可以使用。
更新:从Swift 2开始, String不再符合 SequenceType,但该characters属性提供了Unicode字符序列:
characters
let string = "Hello 🐶🐮 🇩🇪" let characters = Array(string.characters) print(characters)
这也适用于 Swift 3 。
更新:从Swift 4开始, String(再次)是其Characters 的集合 :
Character
let string = "Hello 🐶🐮 🇩🇪" let characters = Array(string) print(characters) // ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]