如何在Kotlin中将没有空格的字符串拆分为整数数组?

abr*_*bra 7 arrays string split kotlin

我需要将一个字符串拆分成一个整数数组.我试过这个:

val string = "1234567"
val numbers = string.split("").map { it.toInt() }
println(numbers.get(1))
Run Code Online (Sandbox Code Playgroud)

但抛出以下异常:

线程"main"中的异常java.lang.NumberFormatException:
对于输入字符串:java"java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)中的java.lang.Integer.parseInt(Integer.java:592) .lang.Integer.parseInt(Integer.java:615)at net.projecteuler.Problem_008Kt.main(Problem_008.kt:54)

如何将字符串"123456"转换为数组[1,2,3,4,5,6]?

Mar*_*nik 7

你只是不需要split,但你也不能toInt()直接调用角色;这将为您提供整数形式的 Unicode 值。你需要Character.getNumericValue()

val string = "1234567"
val digits = string.map(Character::getNumericValue).toIntArray()
println(digits[1])
Run Code Online (Sandbox Code Playgroud)

它打印 2。


s1m*_*nw1 6

您的split("")方法会导致[, 1, 2, 3, 4, 5, 6, 7, ],即第一个和最后一个元素无法格式化为数字.

实际上,CharSequence.map就是你所需要的:

val numbers = string.map { it.toString().toInt() } //[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

使用此代码,将单个字符String转换为相应的Int表示形式.它导致一个List<Int>可以转换为这样的数组:

string.map { it.toString().toInt() }.toIntArray()
Run Code Online (Sandbox Code Playgroud)