代码之家  ›  专栏  ›  技术社区  ›  João Carlos

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

  •  0
  • João Carlos  · 技术社区  · 6 年前

    我正在尝试在Kotlin中将字符串转换为其整数值,使用 toInt() 我在这里找到的功能 answer ,但我得到的是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 回复  |  直到 6 年前
        1
  •  2
  •   Todd    6 年前

    在你的循环中, value 是一个 Char toInt() on Char returns its character number . 因此,您必须将其转换为 String 为了得到它的整数表示形式:

    var v = value.toString().toInt() * 2
    
        2
  •  0
  •   Willi Mentzel user670265    6 年前

    如果您的目标是JVM,则可以使用 Charcater.getNumbericValue :

    val v = Character.getNumericValue(value) * 2
    

    所以不需要做两个演员。

    如果你想独立于平台,就用托德的答案。