我正在尝试迭代字符串,但它一直在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("/"))
}