fkm blog

software開発に関することを書いていきます

Kotlin Standard Libraryを読む(8)

今回は String のコードポイント系。JVM環境でしか使えないみたい。

codePointAt

指定したインデックスのunicodeコードポイントを取ってくる拡張関数。確かこれJavaのStringにもあるよね。

と思ってソース呼んだらまさにそのまんまだった

public inline fun String.codePointAt(index: Int): Int = (this as java.lang.String).codePointAt(index)

codePointBefore

指定したインデックスの1つ前の文字のunicodeコードポイントを取ってくる拡張関数。なぜこれが生えてるか理解できなかったけど、これJavaのほうにもあるのか。。。

public inline fun String.codePointBefore(index: Int): Int = (this as java.lang.String).codePointBefore(index)

当然のことながら、次のコードは例外で落ちるので注意。

val a = "Moke!"
a.codePointBefore(0)
=> java.lang.StringIndexOutOfBoundsException: String index out of range: 0

codePointCount

指定した範囲にコードポイントがいくつあるかを取ってくる拡張関数。これもJavaのStringにあるのね。。

public inline fun String.codePointCount(beginIndex: Int, endIndex: Int): Int =
    (this as java.lang.String).codePointCount(beginIndex, endIndex)