如何在Kotlin中将String转换为Int?

Har*_*der 30 kotlin

我正在Kotlin的一个控制台应用程序上工作,我在main()函数中接受多个参数

fun main(args: Array<String>) {
    // validation & String to Integer conversion
}
Run Code Online (Sandbox Code Playgroud)

我想检查是否String是一个有效的整数并转换相同,否则我必须抛出一些异常.

我该如何解决这个问题?

ear*_*jim 39

你可以打电话toInt()给你的String实例:

fun main(args: Array<String>) {
    for (str in args) {
        try {
            val parsedInt = str.toInt()
            println("The parsed int is $parsedInt")
        } catch (nfe: NumberFormatException) {
            // not a valid int
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

toIntOrNull()作为替代方案:

for (str in args) {
    val parsedInt = str.toIntOrNull()
    if (parsedInt != null) {
        println("The parsed int is $parsedInt")
    } else {
        // not a valid int
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您不关心无效值,那么您可以toIntOrNull()与安全调用操作符和范围函数结合使用,例如:

for (str in args) {
    str.toIntOrNull()?.let {
        println("The parsed int is $it")
    }
}
Run Code Online (Sandbox Code Playgroud)


nxh*_*oaf 9

实际上,有几种方法:

鉴于:

var numberString : String = "numberString" 
// number is the int value of numberString (if any)
var defaultValue : Int    = defaultValue
Run Code Online (Sandbox Code Playgroud)

然后我们有:

+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString is a valid number ?            |  true    | false                 |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toInt()                        |  number  | NumberFormatException |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toIntOrNull()                  |  number  | null                  |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toIntOrNull() ?: defaultValue  |  number  | defaultValue          |
+—————————————————————————————————————————————+——————————+———————————————————————+
Run Code Online (Sandbox Code Playgroud)

  • 您好,CoolMind,第一行是列标题,它回答了问题(numberString 是有效数字)是 true 还是 false (4认同)

Grz*_*rek 8

val i = "42".toIntOrNull()
Run Code Online (Sandbox Code Playgroud)

请记住,顾名思义,结果可以为空.


Coo*_*ind 7

按照上面的建议,使用toIntOrNull().

将字符串解析为 [Int] 数字并返回结果,或者null如果字符串不是数字的有效表示形式。

val a = "11".toIntOrNull()   // 11
val b = "-11".toIntOrNull()  // -11
val c = "11.7".toIntOrNull() // null
val d = "11.0".toIntOrNull() // null
val e = "abc".toIntOrNull()  // null
val f = null?.toIntOrNull()  // null
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你确实有一个String,请调用toInt()它:

val myInt = myString.toInt()
Run Code Online (Sandbox Code Playgroud)

但你真的确定这是一个String吗?如果您迭代单个String,则不会获得String长度为 1 的实例(如果您习惯使用另一种语言,即 Python,您可能会期望),但会获得 的实例,在这种情况下Char您想使用digitToInt():

val myInt = myChar.digitToInt()
Run Code Online (Sandbox Code Playgroud)

  • 为什么要调用“toString()”?提问者已经有一个可以使用的字符串。 (2认同)