I am trying to split an Int into its individual digits, e.g. 3489 to 3 4 8 9, and then I want to put the digits in an Int array.

I have already tried putting the number into a string and then iterating over each digit, but it doesn't work:

var number = "123456"

var array = [Int]()

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

Any ideas?

推荐答案

We can also extend the StringProtocol and create a computed property:

edit/update: 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]

In Swift 5 now we can use the new Character property wholeNumberValue

let string = "123456"

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

Swift相关问答推荐

出错-无法将季节类型的值转换为预期的参数类型';[水果]';

一种函数,用于判断变量的类型是否为在SWIFT中作为参数传递的类型

使用序列初始化字符串的时间复杂度是多少?

有没有办法让文本字段以不同的 colored颜色 显示而不影响半透明背景?

使用变量(而非固定)的字符串分量进行Swift正则表达式

Xcode创建GitHub仓库,但未推送所有文件

在 SwiftUI 中禁用 Select 器选项

如何在 AppDelegate for Cocoa macOS 中创建 mainMenu 和菜单项?

ForEach within List:模式的好处?

Swift-SceneKit-无法从art.scnassets加载.scn文件

如何在一个视图控制器中创建具有相同行为的多个集合视图?

从 Int 到 String 的属性更改引发 SwiftUI 视图不更新

如何让动画变慢 SwiftUI

如何根据 SwiftUI 中的字体大小定义按钮的大小?

如何在 Swift 中将 XPC 自定义类列入白名单?

Xcode swift ui 错误KeyPathComparator仅在 macOS 12.0 或更高版本中可用

macOS 守护进程应该由Command Line ToolXcode 模板制作吗?

Xcode 13.3 将函数调用更改为属性访问

在 Swift 中将计时器标签格式化为小时:分钟:秒

如何在 SwiftUI 中的一个视图上显示两个alert ?