swift - 如何将 Int 拆分为其各个数字?

标签 swift

我试图将一个 Int 拆分成它的各个数字,例如3489 到 3 4 8 9,然后我想把这些数字放在一个 Int 数组中。

我已经尝试将数字放入字符串中,然后遍历每个数字,但它不起作用:

var number = "123456"

var array = [Int]()

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

有什么想法吗?

最佳答案

我们还可以扩展 StringProtocol 并创建一个计算属性:

编辑/更新: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 - 如何将 Int 拆分为其各个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415937/

相关文章:

ios - 继续到另一个 Storyboard

swift - Xcode 9.2 : linker command failed with exit code 1 (use -v to see invocation)

iOS WebRTC 处理丢包

node.js - 如何使用 Firebase 云函数向客户端(Swift)发送 strip 响应

Swift 在方法中返回 bool

swift - UITableView 单元格背景

uiviewcontroller - 属性未在 super.init 调用时初始化

swift - UITabBarController 和 viewDidLoad

iOS:覆盖 UIAppearance 外观WhenContainedInInstancesOfClasses

ios - Swift `Decodable` 不适用于嵌套的 JSON 对象,除非嵌套是一个数组