kotlin Exception「java.lang.IndexOutOfBoundsException: start x, end x, length x」の解決方法

kotlin Exception「java.lang.IndexOutOfBoundsException: start x, end x, length x」の解決方法

kotlinで、Exception「java.lang.IndexOutOfBoundsException: start x, end x, length x」の解決方法を記述してます。「removeRange」等を使用時に範囲を超えた場合に発生します。

環境

  • OS windows11 home
  • java 19.0.1
  • kotlin 1.7.20-release-201

Exception全文

以下のコードで発生。

fun main() {

    var str = "abcde"

    println( str.removeRange(0,6) )     
    
}

Exception

Exception in thread "main" java.lang.NegativeArraySizeException: -1
        at java.base/java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:88)
        at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:119)
        at kotlin.text.StringsKt__StringsKt.removeRange(Strings.kt:555)
        at HelloKt.main(hello.kt:5)
        at HelloKt.main(hello.kt)

原因

「removeRange」で削除する範囲が文字列の文字数を超えていたため

対処法

最大範囲を指定するなら「length」などを使用して、範囲を超えないようにする

fun main() {

    var str = "abcde"

    println( str.removeRange(3,str.length) ) 
    // abc
    
}