Kotlin有很多简短和有趣的功能。所以,我想知道是否有一些快速和简短的方法将字符串数组转换为整数数组。与Python中的此代码类似:
results = [int(i) for i in results]
答案 0 :(得分:32)
您可以将.map { ... }
与.toInt()
或.toIntOrNull()
:
Sheep
只有结果不是数组而是列表。最好在非性能关键代码中使用列表而不是数组,请参阅the differences。
如果您需要数组,请添加.toTypedArray()
或.toIntArray()
。
答案 1 :(得分:2)
如果您尝试转换实现List
的{{1}}结构(例如RandomAccess
或ArrayList
),则可以使用此版本以获得更好的性能:
Array
此版本编译为基本for循环和IntArray(strings.size) { strings[it].toInt() }
:
int[]
答案 2 :(得分:2)
val result = "[1, 2, 3, 4, 5]".removeSurrounding("[","]").replace(" ","").split(",").map { it.toInt() }
答案 3 :(得分:1)
我使用像
这样简单的东西fun Array<String>.asInts() = this.map { it.toInt() }.toTypedArray()
strings.asInts()
或者,如果您要加入扩展程序:
HttpServletRequest
答案 4 :(得分:1)
考虑这样的输入""
(空字符串)
最好先进行过滤。的确,返回值是列表,但不是数组。
如果需要数组,请添加.toTypedArray()
或.toIntArray()
。
fun stringToIntList(data: String): List<Int> =
data.split(",").filter { it.toIntOrNull() != null }
.map { it.toInt() }
答案 5 :(得分:1)
如果根据其他答案的建议使用Array.map
,则会得到List
,而不是Array
。如果要将数组strings
映射到另一个数组results
,则可以直接执行以下操作:
val results = Array(strings.size) { strings[it].toInt() }
这比先映射到List
然后通过调用Array
将元素复制到.toTypedArray()
更为有效。