我试着把一个整数拆分成单独的数字,例如3489到3 4 8 9,然后我想把这些数字放到一个整数数组中.

我已经try 过将数字放入字符串中,然后对每个数字进行迭代,但没有效果:

var number = "123456"

var array = [Int]()

for digit in number {
    array.append(digit)
}

有什么想法吗?

推荐答案

我们还可以扩展StringProtocol并创建计算(computed)属性:

编辑/更新:Xcode 11.5 • Swift 5.2

extension StringProtocol  {
    var digits: [Int] { compactMap(\.wholeNumberValue) }
}

let string = "123456"
let digits = string.digits // [1, 2, 3, 4, 5, 6]

extension LosslessStringConvertible {
    var string: String { .init(self) }
}

extension Numeric where Self: LosslessStringConvertible {
    var digits: [Int] { string.digits }
}

let integer = 123
let integerDigits = integer.digits // [1, 2, 3]

let double = 12.34
let doubleDigits = double.digits   // // [1, 2, 3, 4]

Swift 5中,我们现在可以使用新的Character属性wholeNumberValue

let string = "123456"

let digits = string.compactMap{ $0.wholeNumberValue } // [1, 2, 3, 4, 5, 6]

Swift相关问答推荐

Apple 的自然语言 API 返回意外结果

SwiftUI:如何绘制填充和描边的形状?

在 SwiftUI 中使用参数初始化 @StateObject

xcrun:错误:无法找到实用程序“xctest”,不是开发人员工具或 PATH

Xcode 在上传时卡在“将包上传到 App Store”阶段

SwiftUI 中的 .primary 和 .secondary colored颜色 是什么?

如何在 SwiftUI 中显示来自 url 的图像

SwiftUI HStack 以等间距填充整个宽度

SwiftUI:如何弹出到根视图

Swift UI中具有圆角半径的按钮边框

SwiftUI 中的 @Binding 和 ForEach

iOS13导航栏大标题不覆盖状态栏

Swift 5.0:不推荐使用“withUnsafeBytes”:使用 `withUnsafeBytes(...)

Xcode 和 Swift - 没有标题栏但有关闭、最小化和调整大小按钮的窗口

DispatchQueue:不能在非主线程上使用 asCopy = NO 调用

如何使关联值相等的 Swift 枚举

“${PODS_ROOT}/SwiftLint/swiftlint”使用 Xcode 10 导致“Command PhaseScriptExecution failed with a nonzero exit code”

如何获得 Swift 枚举的计数?

Swift 4 中默认情况下的可编码枚举

在 WKWebView 中加载本地 Web 文件和资源