You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中将无空格字符串拆分为整数数组?

解决字符串转整数数组的问题,同时避免NumberFormatException

你遇到的NumberFormatException其实是拆分字符串时不小心生成了空字符串导致的——比如直接用split("")处理"123456",得到的数组会包含开头和结尾的空串,当你尝试把空串转成整数时自然就报错了。下面给你几种在Kotlin里解决这个问题的靠谱方法:

方法一:直接遍历字符转换(最推荐)

字符串本身是可迭代的,我们可以直接遍历每个字符,把它转成对应的整数:

val inputStr = "123456"
// Kotlin 1.5+ 可以用更直观的digitToInt()
val intArray = inputStr.map { it.digitToInt() }.toIntArray()

// 如果是旧版本Kotlin,用ASCII差值的方式也一样好用
// val intArray = inputStr.map { it - '0' }.toIntArray()

原理很简单:每个字符形式的数字(比如'1')和字符'0'的ASCII码差值正好就是对应的整数,digitToInt()则是Kotlin封装好的便捷方法,两者效果完全一致。

方法二:拆分后过滤空串(如果你坚持用拆分的方式)

如果一定要用split方法,记得先过滤掉拆分产生的空字符串:

val inputStr = "123456"
val intArray = inputStr.split("")
    .filter { it.isNotEmpty() } // 去掉开头和结尾的空串
    .map { it.toInt() }
    .toIntArray()

这种方式虽然可行,但相比第一种多了拆分和过滤的步骤,效率稍低一点。

方法三:手动循环填充数组(适合理解底层逻辑)

如果你想更直观地控制整个过程,可以手动创建数组并逐个填充:

val inputStr = "123456"
val intArray = IntArray(inputStr.length)
for (index in inputStr.indices) {
    intArray[index] = inputStr[index].digitToInt()
    // 同样可以替换成 inputStr[index] - '0'
}

这种方式适合新手理解字符串转数组的底层过程,逻辑清晰易懂。

内容的提问来源于stack exchange,提问作者abra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:29:54