我试图将一个Int拆分为其各个数字,例如3489到3 4 8 9,然后我要将这些数字放入一个Int数组中。
我已经尝试过将数字放入字符串中,然后遍历每个数字,但是它不起作用:
var number = "123456" var array = [Int]() for digit in number { array.append(digit) }
有任何想法吗?
我们还可以扩展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
Character
wholeNumberValue
let string = "123456" let digits = string.compactMap{ $0.wholeNumberValue } // [1, 2, 3, 4, 5, 6]