我试着把一个整数拆分成单独的数字,例如3489到3 4 8 9,然后我想把这些数字放到一个整数数组中.
我已经try 过将数字放入字符串中,然后对每个数字进行迭代,但没有效果:
var number = "123456"
var array = [Int]()
for digit in number {
array.append(digit)
}
有什么 idea 吗?
我试着把一个整数拆分成单独的数字,例如3489到3 4 8 9,然后我想把这些数字放到一个整数数组中.
我已经try 过将数字放入字符串中,然后对每个数字进行迭代,但没有效果:
var number = "123456"
var array = [Int]()
for digit in number {
array.append(digit)
}
有什么 idea 吗?
我们还可以扩展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]