Kotlin 提供了几种高效的将字符串转换为整数的方法。最佳方法取决于你的错误处理偏好。本文探讨了三种常见的方法:toInt()
、toIntOrNull()
和 parseInt()
,并重点介绍了它们的优缺点。
目录
使用 toInt()
将字符串转换为整数
toInt()
方法提供了一种直接的方法。但是,如果输入字符串不是有效的整数,它会抛出 NumberFormatException
异常。这需要使用 try-catch
块进行稳健的错误处理。
fun stringToInt(str: String): Int {
return try {
str.toInt()
} catch (e: NumberFormatException) {
println("无效输入: $str")
0 // 或抛出自定义异常,或返回其他默认值
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1' 的转换结果:${stringToInt(numStr1)}") // 输出:123
println("'$numStr2' 的转换结果:${stringToInt(numStr2)}") // 输出:无效输入: abc, 0
}
此示例演示了如何处理异常。请记住根据应用程序的需求调整错误处理(println
和返回值 0
)。
使用 toIntOrNull()
安全转换
toIntOrNull()
提供了一个更安全的替代方案。如果转换成功,它返回整数;如果转换失败,则返回 null
。这消除了 try-catch
,从而使代码更简洁,并避免了异常处理的开销。
fun stringToIntOrNull(str: String): Int? {
return str.toIntOrNull()
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1' 的转换结果:${stringToIntOrNull(numStr1)}") // 输出:123
println("'$numStr2' 的转换结果:${stringToIntOrNull(numStr2)}") // 输出:null
}
val num = stringToIntOrNull("456")
val result = num ?: 0 // 如果转换失败,则使用 0 作为默认值
println(result) // 输出:456
val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // 输出:0
Elvis 运算符 (?:
) 可以优雅地处理潜在的 null
值。这种方法通常因其简洁性和安全性而被推荐。
使用 parseInt()
进行字符串到整数的转换
parseInt()
方法 (java.lang.Integer.parseInt()
) 提供了另一种选择,但在 Kotlin 中不太惯用。与 toInt()
一样,它会抛出 NumberFormatException
异常,需要使用 try-catch
。它通常不如 Kotlin 的内置方法更受欢迎。
fun stringToIntParseInt(str: String): Int {
return try {
Integer.parseInt(str)
} catch (e: NumberFormatException) {
println("无效输入: $str")
0 // 或以其他方式处理异常
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1' 的转换结果:${stringToIntParseInt(numStr1)}") // 输出:123
println("'$numStr2' 的转换结果:${stringToIntParseInt(numStr2)}") // 输出:无效输入: abc, 0
}
总而言之,toIntOrNull()
是推荐的方法,因为它简洁且具有空安全性。只有当你确定输入字符串始终是有效的整数并且更喜欢显式的异常处理时,才使用 toInt()
。除非有充分的理由使用 Java 方法,否则避免使用 parseInt()
。始终有效地处理潜在的错误以防止应用程序崩溃。