【问题标题】:Swift Convert Int[] to Int variableSwift 将 Int[] 转换为 Int 变量
【发布时间】:2017-07-05 14:19:03
【问题描述】:

使用 Swift 3 我得到了一个从数字创建的 Int 数组并反转

var rev:String = String(number)
var pro:String = String(rev.characters.reversed())

var myArr = rev.characters.flatMap{Int(String($0))}
myArr = myArr.sorted { $1 < $0 }

现在我想

var myResult = all numbers from array in one variable

让我们说

myArr = [1,2,3,4]
// And i want to myResult = 1234

或者如果有任何其他方法可以反转一个数字,我的意思是普通的整数变量?

【问题讨论】:

    标签: ios iphone arrays swift type-conversion


    【解决方案1】:

    可以将十进制数字数组组合成一个数字 简单的整数运算:

    let digits = [1, 2, 3, 4]
    let result = digits.reduce(0, { $0 * 10 + $1 })
    print(result) // 1234
    

    或者如果有任何其他方法可以反转一个数字,我的意思是普通的整数变量?

    您不需要为此目的进行数组或字符串转换:

    func reverse(_ n: Int) -> Int {
        var result = 0
        var n = n // A mutable copy of the given number
        while n > 0 {
            // Append last digit of `n` to `result`:
            result = 10 * result + n % 10  
            // Remove last digit from `n`:
            n /= 10
        }
        return result
    }
    
    print(reverse(12345)) // 54321
    

    【讨论】:

      【解决方案2】:

      为此你可以这样尝试

      let myArr = [1,2,3,4]
      
      let myResult = myArr.map(String.init).joined()
      

      如果您希望 myResult 为 Int 那么

      let myResult = myArr.map(String.init).joined()
      if let intResult = Int(myResult) {
          print(intResult)
      }
      

      【讨论】:

      • 注意 Int 范围。处理可选值,不要强制解包。
      • @KamilHarasimowicz 如果您检查问题/答案编号是由 Int 数组组成的,那么如果您转换合并字符串编号,它就不会崩溃。
      • @NiravD 如果创建的值太大而不能成为整数,它将崩溃。例如,let myArr = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
      • @ConnorNeville 现在编辑答案,它不会崩溃。
      • @ConnorNeville 是的,我想过这样的例子
      【解决方案3】:

      您可以将数字映射到字符串,然后将它们连接起来并将字符串转换为 Int。

      if let result = Int(myArray.map{String($0)}.joined()) {
          //your number
      }
      

      【讨论】:

        【解决方案4】:

        我不是 100% 确定你想要什么。如果您只想反转 Int,那么可能 Martin R 的解决方案是最佳选择(使用简单的算术)。

        现在,如果您想对数字进行排序,然后将其转换为 Int,我建议您这样做:

        let number = 1432
        let string = String(String(number).characters.sorted(by: >))
        
        let integerValue = Int(string) // Returns 4321
        

        这将返回一个可选的 Int。

        【讨论】:

          猜你喜欢
          • 2012-09-02
          • 2014-07-31
          • 2014-10-06
          • 1970-01-01
          • 2023-04-08
          • 2019-12-03
          • 2017-10-15
          • 1970-01-01
          • 2020-07-24
          相关资源
          最近更新 更多