一尘不染

在Swift 2.0中将Character转换为Int

swift

我只想将一个 字符 转换为 Int

这应该很简单。但是我没有发现前面的答案有帮助。总是有一些错误。也许是因为我正在Swift 2.0中进行尝试。

for i in (unsolved.characters) {
  fileLines += String(i).toInt()
  print(i)
}

阅读 714

收藏
2020-07-07

共1个答案

一尘不染

在Swift 2.0 toInt()等中,已被初始化程序取代。(在这种情况下,Int(someString)。)

因为并非所有字符串都可以转换为int,所以此初始化程序是有 问题的 ,这意味着它返回一个 可选的int
Int?)而不是一个返回Int。最好的办法是使用来包装此可选内容if let

我不确定您要做什么,但是这段代码可以在Swift 2中使用,并且可以完成我认为您要执行的操作:

let unsolved = "123abc"

var fileLines = [Int]()

for i in unsolved.characters {
    let someString = String(i)
    if let someInt = Int(someString) {
        fileLines += [someInt]
    }
    print(i)
}

或者,使用更快捷的解决方案:

let unsolved = "123abc"

let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! })

// fileLines = [1, 2, 3]

您可以使用flatMap

let fileLines = unsolved.characters.flatMap { Int(String($0)) }

flatMap返回“一个Array含有映射的非零结果transformself
......所以当Int(String($0))nil时,结果被丢弃。

2020-07-07