2017-02-16 37 views
0

与斯威夫特3个工作,我从数量创造和反斯威夫特转换INT []到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 } 

一个int数组现在我想

var myResult = all numbers from array in one variable 

咱们说

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

或者如果有任何其他方式来反转只是一个数字,我的意思是正常的整数变量?

回答

1

对于您可以尝试像这样

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) 
} 
+0

关注Int范围。处理可选值时,请勿强制展开。 –

+0

@KamilHarasimowicz如果您检查问题/答案编号是由Int数组生成的,所以如果您转换合并字符串编号,它不会崩溃。 –

+0

这工作得很好,谢谢你的帮助! – mgwork

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 
0

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

0

我不是100%确定你要在这里。如果你只是想扭转一个Int,那么Martin R的解决方案可能是最好的选择(用简单的算术)。

现在,如果要排序的编号,然后将其转换为一个int我建议是这样的:

let number = 1432 
let string = String(String(number).characters.sorted(by: >)) 

let integerValue = Int(string) // Returns 4321 

这将返回一个可选的诠释。