如何在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符合SequenceType协议,其序列发生器 枚举字符.

而且,由于Swift字符串完全支持Unicode,因此它甚至可以用于字符


Update: As of Swift 2, String不再符合 SequenceType,但characters属性提供了一系列 Unicode字符:

let string = "Hello ?? ??"
let characters = Array(string.characters)
print(characters)

这也适用于Swift 3.


Update: As of Swift 4,String(同样)是其

let string = "Hello ?? ??"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "?", "?", " ", "??"]

Ios相关问答推荐

在iOS中禁用URLSession自动重试机制

Swift导航远离视频导致崩溃

SwiftUI-工作表不显示导航标题

如何在 Flutter 应用程序中测试来自 App/Play Store 的移动深层链接?

多协议和类继承混乱,Swift

iOS上从谷歌云存储API不断收到网络连接已丢失的错误信息

.frame() 修饰符的位置如何影响视图?

UIView 倒置旋转时的zoom 问题

AppCenter 错误:/usr/bin/xcodebuild 失败,返回码:65

在视图控制器中实例化视图控制器是否可能/智能?

如何根据设备时间设置 Flutter 应用时间线?

async/await、Task 和 [weak self]

使用swift将图像转换为A4大小的pdf

如何判断 `NSManagedObject` 是否已被删除?

标题为 UIImage 的导航栏

UIButton 事件.有什么不同?

使用 Xcode 4 的 iPhone 临时构建

iOS:设备旋转后如何运行函数(Swift)

有什么方法可以加粗 NSString 的一部分?

在 iOS 上没有显示数字键盘