如何在Kotlin中将String数组转换为Int数组?

时间:2017-08-22 16:50:35

标签: arrays kotlin type-conversion

Kotlin有很多简短和有趣的功能。所以,我想知道是否有一些快速和简短的方法将字符串数组转换为整数数组。与Python中的此代码类似:

results = [int(i) for i in results]

6 个答案:

答案 0 :(得分:32)

您可以将.map { ... }.toInt().toIntOrNull()

一起使用
Sheep

只有结果不是数组而是列表。最好在非性能关键代码中使用列表而不是数组,请参阅the differences

如果您需要数组,请添加.toTypedArray().toIntArray()

答案 1 :(得分:2)

如果您尝试转换实现List的{​​{1}}结构(例如RandomAccessArrayList),则可以使用此版本以获得更好的性能:

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()更为有效。