加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift 2.0中将字符转换为Int

发布时间:2020-12-14 05:56:18 所属栏目:百科 来源:网络整理
导读:我只想把一个字符转换成一个Int。 这应该很简单但我没有发现以前的答案有帮助。总有一些错误。也许是因为我在Swift 2.0中尝试。 for i in (unsolved.characters) { fileLines += String(i).toInt() print(i)} 在Swift 2.0中,toInt()等已被替换为初始化器。
我只想把一个字符转换成一个Int。

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

for i in (unsolved.characters) {
  fileLines += String(i).toInt()
  print(i)
}
在Swift 2.0中,toInt()等已被替换为初始化器。 (在这种情况下,Int(someString))

因为并不是所有的字符串都可以转换为int,所以这个初始化器是可用的,这意味着它返回一个可选的int(Int?)而不是Int。最好的做法是打开这个可选的,如果允许的话。

我不确定你正在做什么,但是这个代码可以在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)
}

或者,对于Swiftier解决方案:

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返回一个包含非自变量的非零结果的数组,因此当int(String($ 0))为零时,结果被丢弃。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读