具有(字符串)奇怪行为的科特林
Kotlin with(String) strange behavior
我有一个简单的代码块,应该像“5555;John Snow”这样解析字符串
//Example of code without string population
val str = StringBuilder()
with(str.toString().trim()) {
card.id = substring(0, indexOf(";"))
card.name = substring(indexOf(";" + 1, length))
}
但是当它尝试取名字时,抛出错误
java.lang.StringIndexOutOfBoundsException: length=SOME_LENGHT; index=-1
调试检查,字符串正确。它甚至有时在调试器中工作
我的错。
不正确
card.name = substring(indexOf(";" + 1, length))
正确
card.name = substring(indexOf(";") + 1, length)
不用担心索引:
with(str.toString().trim()) {
card.id = substringBefore(";")
card.name = substringAfter(";")
}
我有一个简单的代码块,应该像“5555;John Snow”这样解析字符串
//Example of code without string population
val str = StringBuilder()
with(str.toString().trim()) {
card.id = substring(0, indexOf(";"))
card.name = substring(indexOf(";" + 1, length))
}
但是当它尝试取名字时,抛出错误
java.lang.StringIndexOutOfBoundsException: length=SOME_LENGHT; index=-1
调试检查,字符串正确。它甚至有时在调试器中工作
我的错。
不正确
card.name = substring(indexOf(";" + 1, length))
正确
card.name = substring(indexOf(";") + 1, length)
不用担心索引:
with(str.toString().trim()) {
card.id = substringBefore(";")
card.name = substringAfter(";")
}