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

Joã*_*los 3 kotlin

我正在尝试使用我在这个答案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()
    }
}
Run Code Online (Sandbox Code Playgroud)

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

103:8 5 99:6 9 91:2 4 101:7 8 87:0 3 103:8 3 93:3 4 93:3 7
Run Code Online (Sandbox Code Playgroud)

我期待着这样的

8:8 5 6:6 9 2:2 4 7:7 8 0:0 3 8:8 3 3:3 4 3:3 7
Run Code Online (Sandbox Code Playgroud)

Tod*_*odd 8

注意:我更新了这个答案,因为 Kotlin 1.5 有一个函数可以直接执行此操作。

在您的循环中,valueis a Char,并且toInt()on Char 返回其字符 number。因此,您必须执行转换以获得其数字表示形式。

从 Kotlin 1.5 开始,您可以使用digitToInt()以下方法来完成此操作:

var v = value.digitToInt()
Run Code Online (Sandbox Code Playgroud)

在 Kotlin 1.5 之前,我们需要先转换为 a String,然后转换为Int

var v = value.toString().toInt() * 2
Run Code Online (Sandbox Code Playgroud)