如何在Kotlin中将字符转换为其整数值?

时间:2018-09-18 19:00:16

标签: kotlin

我正在尝试使用在answer中找到的toInt()函数将字符串转换为Kotlin中的整数值,但是我却得到了ascii值。

我做错了什么?

var input = "8569 2478 0383 3437"

val regex = "[^0-9]".toRegex()
var value = regex.replace(input, "")

val iterator = value.iterator()

var sum : Int = 0
var v : Int
for((index, value) in iterator.withIndex()){
    if(index % 2 == 0){
        var v = value.toInt() * 2 
        if(v > 9) v -= 9

        print("$v:$value ")
        sum += v
    }else{
        print("$value ")
        sum += value.toInt()
    }
}

执行上面的代码,这是印刷的数字

103:8 5 99:6 9 91:2 4 101:7 8 87:0 3 103:8 3 93:3 4 93:3 7

我期待着这样的人

8:8 5 6:6 9 2:2 4 7:7 8 0:0 3 8:8 3 3:3 4 3:3 7

2 个答案:

答案 0 :(得分:2)

在您的循环中,valueChartoInt() on Char returns its character number。因此,您必须将其转换为String才能获得其整数表示形式:

var v = value.toString().toInt() * 2

答案 1 :(得分:0)

如果您以JVM为目标,则可以使用Charcater.getNumbericValue

val v = Character.getNumericValue(value) * 2

因此无需进行两次强制转换。

如果要独立于平台,请遵循托德的答案。