Kotlin 文字からUnicodeを取得(codePointAt)

Kotlin のcodePointAtメソッドで、文字からUnicodeコードポイントを取得するサンプルです。

目次

サンプル codePointAtとは
  Unicodeコードポイントを取得する
  数値文字参照
  サロゲートペア文字列の場合

codePointAtとは

文字列.codePointAt(位置)
  • 文字列のうち、引数の数値の位置にあるUnicodeコードポイントを返します。
  • 文字列の最初の1文字目の位置は0です。
  • 引数が範囲外のときは、StringIndexOutOfBoundsExceptionの例外を返します。
  • 以下はKotlin のcodePointAtのリンクです。
    https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/code-point-at.html

Unicodeコードポイントを取得する

fun main() {
    val a = "ABあい"

    println(a.codePointAt(0)) // 65
    println(a.codePointAt(1)) // 66
    println(a.codePointAt(2)) // 12354
    println(a.codePointAt(a.length - 1)) //12356

    println(Integer.toHexString(a.codePointAt(0))) //41
    println(Integer.toHexString(a.codePointAt(1))) //42
    println(Integer.toHexString(a.codePointAt(2))) //3042
}

4行目は「A」を指しUnicodeコードポイントの65を表示します。
5行目は「B」を指しUnicodeコードポイントの66を表示します。
6行目は「あ」を指しUnicodeコードポイントの12354を表示します。
7行目は、最後の文字の「い」を指しています。lengthで文字列の長さを取得して1引きます。
Unicodeコードポイントの12356を表示します。

9~11行目は、toHexStringメソッドで16進数にしています。

数値文字参照

10進数の場合: &#数値;
16進数の場合: &#x数値;

上記コードの値は、数値文字参照で使用できます。

HTML上で
10進数の「A」と16進数の「A」は、「A」と表示されます。
10進数の「あ」と16進数の「あ」は、「あ」と表示されます。

サロゲートペア文字列の場合

サロゲートペア文字列の場合のサンプルです。
2行目は、サロゲートペアの「つちよし」です。

fun main() {
    val a = "𠮷"

    println(a.codePointAt(0)) // 134071

    println(Integer.toHexString(a.codePointAt(0))) //20bb7
}

4行目は、codePointAtメソッドで「つちよし」のUnicodeコードポイントを表示しています。
6行目は、toHexStringメソッドで16進数にしています。

文字コードは秀丸やサクラエディタで確認できます。

秀丸で見た場合

Unicodeコードポイントは、U+16進数で記述されます。

関連の記事

秀丸 文字コードを確認する方法

△上に戻る