Kotlin字符串转换为整数数组

12

我希望找到一种最有效的方法将一个类似于字符串

"[1,2,3,4,5]"

在 Kotlin 中将 [1,2,3,4,5] 转换为整数数组


将字符串数组转换为整数数组的Kotlin代码如下所示: - Julian Rubin
在 JavaScript 版本中,JSON.parse<Array<Int>>("[1,2,3,4,5]") - Slai
嗨,朱利安,你建议重复的问题涉及字符串数组,显然这里不是这种情况。此问题仅涉及一个包含整数数组的字符串。 - heisen
1
为了更好地理解,这里有一个类似的问题,但是是关于Java的:https://dev59.com/H2sz5IYBdhLWcg3w0bOl - heisen
对于上述问题,这个答案相当容易转换为符合 Kotlin 语言习惯的代码。或者可以使用 klaxon 或 JSONObject,就像 @Slai 的回答一样。 - Paul Hicks
4个回答

20

幸运的是,我已经成功地让它工作了,所以我将在这里留下它以供日后参考。

val result = "[1,2,3,4,5]".removeSurrounding("[", "]").split(",").map { it.toInt() }

感谢大家!


竞赛编程?无论哪种方式,谢谢。 - Nate T

3

当用户将列表转换为字符串并再次需要将该字符串转换回列表时, 由于整数之间的空格,应用程序会崩溃并出现NumberFormatException异常, 因此只需删除不必要的空格即可。

val result = "[1, 2, 3, 4, 5]".removeSurrounding("[","]").replace(" ","").split(",").map { it.toInt() }

1
只需调用 it.trim().toInt() 即可删除空格。 - Richard Muvirimi
@RichardMuvirimi 可以不指定分割符的长度吗?比如 List.split(",\ ") - Nate T
1
@NateT 使用正则表达式 https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html - Richard Muvirimi

0

尝试使用 toCharArray() 函数,首先去掉开头和结尾的字符('[' 和 ']')

inline fun String.toCharArray(
    destination: CharArray, 
    destinationOffset: Int = 0, 
    startIndex: Int = 1, 
    endIndex: Int = length -1
): CharArray (source)

你可以手动将 char 类型的转换值复制到一个新数组中。

在 Kotlin 网页中查看更多信息


0

还有一种实现方式:

"[1,2,3,4,5]".replace(Regex("""[\[,\]]"""), "").map { it - '0' }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接