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

将CSV字符串转换为Int列表时遭遇NumberFormatException问题求助

解决逗号分隔字符串转Int列表的NumberFormatException问题

嘿,这个问题我之前也踩过坑!你遇到的java.lang.NumberFormatException原因很直白:要转换的数字字符串里带了前导空格(比如报错信息里的" 31"),而Integer.parseInt()(或者Kotlin的toInt())只能解析纯数字组成的字符串,空格会被判定为非法字符直接抛出异常。

给你两个简单靠谱的解决方案,随便选一个都能搞定:

方案一:分割后给每个元素去除首尾空格

先按逗号分割字符串,再对每个分割出来的字符串调用trim()方法去掉前后空格,之后再转成Int:

val inputStr = "12, 31, 45, 67"
val intList = inputStr.split(",")
    .map { it.trim() } // 去掉每个元素的前后空格
    .filter { it.isNotBlank() } // 可选:过滤掉可能的空字符串(比如首尾逗号或连续逗号的情况)
    .map { it.toInt() }

方案二:用正则表达式分割,一次性处理逗号前后的空格

直接用正则\\s*,\\s*来分割,这个正则会匹配逗号前后的任意数量空格,分割出来的元素自然就是干净的数字字符串:

val inputStr = "12, 31, 45, 67"
val intList = inputStr.split("\\s*,\\s*".toRegex())
    .filter { it.isNotBlank() } // 可选:过滤空元素
    .map { it.toInt() }

两种方案都能完美解决你遇到的空格问题,要是还有其他特殊情况(比如字符串里混了非数字字符),可以再给元素加个合法性判断,不过目前看你的问题核心就是空格导致的~

内容的提问来源于stack exchange,提问作者Hasan A Yousef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:50:08