一尘不染

将Swift字符串转换为数组

swift

如何在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];
}

阅读 4493

收藏
2020-07-07

共1个答案

一尘不染

在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(再次)是其Characters 的集合 :

let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]
2020-07-07