一尘不染

Swift-将Int拆分为单个数字

swift

我试图将一个Int拆分为其各个数字,例如3489到3 4 8 9,然后我要将这些数字放入一个Int数组中。

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

var number = "123456"

var array = [Int]()

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

有任何想法吗?


阅读 477

收藏
2020-07-07

共1个答案

一尘不染

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

编辑/更新: Xcode 11•Swift 5.1

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]
2020-07-07