如何在Kotlin中将字符串数组转换为整数数组?

30

Kotlin有许多简化的语法和有趣的特性。所以我想知道是否有一种快速简洁的方式将字符串数组转换为整数数组,类似于Python中的以下代码:

results = [int(i) for i in results]
7个回答

72

4

我会使用类似简单的东西,比如

val strings = arrayOf("1", "2", "3")
val ints = ints.map { it.toInt() }.toTypedArray()

或者,如果你喜欢扩展程序:

fun Array<String>.asInts() = this.map { it.toInt() }.toTypedArray()

strings.asInts()

3

如果你正在尝试转换实现RandomAccessList结构(比如ArrayList或者Array),可以使用以下版本以获得更好的性能:

IntArray(strings.size) { strings[it].toInt() }

这个版本编译成了一个基本的for循环和 int[] 数组:

int size = strings.size();
int[] result = new int[size];
int index = 0;

for(int newLength = result.length; index < newLength; ++index) {
    String numberRaw = strings.get(index);
    int parsedNumber = Integer.parseInt(numberRaw);
    result[index] = parsedNumber;
}

3

如果你像其他答案建议的那样使用Array.map,你将得到一个List而不是一个Array。如果你想把一个数组strings映射到另一个数组results,可以直接这样做:

val results = Array(strings.size) { strings[it].toInt() }

相较于先将元素映射到 List 再通过调用 .toTypedArray() 将元素复制到 Array 中,这种方式更加高效。


1
考虑输入如此 ""(空字符串)
最好先进行过滤。而且返回值确实是列表而不是数组。
如果需要数组,请添加 .toTypedArray().toIntArray()
    fun stringToIntList(data: String): List<Int> =
            data.split(",").filter { it.toIntOrNull() != null }
                    .map { it.toInt() }


0

找到以下最简单的内容

strings.chars().toArray()

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

1
这里完全不需要处理"["和","的代码。 - Andrew Regan
@AndrewRegan,您是否可以详细说明原因? - Otieno Rowland
@RowlandMtetezi,因为它会分散注意力,而且问题中也没有提到它。 - saidfagan

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