字符串索引超出范围:12 (Kotlin)



我正在尝试迭代字符串,但它一直在12抛出此错误。

fun main() {
var testStr = "subject1EE/Physics - 101"
for(i in 0..testStr.length){
if (testStr[i].equals("/")) {
testStr = testStr.dropLast(1)
break
} else {
testStr = testStr.dropLast(1)
}
}
println(testStr)
}

错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 12
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at com.example.jarnetor.TestKt.main(Test.kt:8)
at com.example.jarnetor.TestKt.main(Test.kt)

您的for循环将从0迭代到testStr长度。但是在for循环中,您通过每次删除一个字符来改变testStr。当然,你最终会得到一个"超出范围"的索引。因为你的字符串越来越小,但你的for循环引用了它的原始长度。

假设您希望获得斜杠之前的子字符串,那么您可以简单地执行以下操作:

fun main() {
var testStr = "subject1EE/Physics - 101"
println(testStr.substringBefore("/"))
}

最新更新