文字列の指定した位置にある文字のUnicodeコードポイントを取得する(codePointAt)

String オブジェクトのインスタンスメソッドである codePointAt は、文字列の指定した位置にある文字の Unicode コードポイントを取得します。ここでは String オブジェクトの codePointAt メソッドの使い方について解説します。

※ UTF-16 文字コードを取得する場合は charCodeAt メソッドを使ってください。(詳細は「文字列の指定した位置にある文字のUTF-16文字コードを取得する(charCodeAt)」を参照されてください)。

(Last modified: )

指定位置のUnicodeコードポイントを取得する(codePointAt)

String オブジェクトの codePointAt メソッドは、対象の文字列の指定したインデックスが示す位置にある文字の Unicode コードポイントを取得します。書式は次のとおりです。

文字列.codePointAt(インデックス)

インデックスで指定した位置にある文字の Unicode コードポイントを戻り値として返します。インデックスは文字列の最初の文字が 0 、次の文字が 1 となります。範囲外のインデックスを指定した場合は undefined が返されます。

指定位置のUnicodeコードポイントを取得する(codePointAt)(1)

Unicode コードポイントは 0x0000 から 0x10FFFF (0 から 1114111) の間の数値を返します。サロゲートペアで表される文字についてはも Unicode コードポイントでは単一のコードポイントで表されます。サロゲートペアでない文字については UTF-16 文字コードと Unicode コードポイントは同じ値となります。

次のサンプルをみてください。

let word = '花言葉';

console.log(word.codePointAt(0));
>> 33457
console.log(word.codePointAt(2));
>> 33865
console.log(word.codePointAt(4));
>> undefined

インデックスに 0 、 2 、 4 をそれぞれ指定して文字を取得しています。インデックスの 4 は文字列の範囲外なので undefined を取得しています。

サロゲートペアで表される文字については次のようになります。

let word = '●';

console.log(word.codePointAt(0));
>> 173770
console.log(word.codePointAt(1));
>> 57034

※ ● のところには次の文字が入ります。

サロゲートペアのlengthプロパティの値(1)

サロゲートペアで表される文字に対して、 1 つ目の Unicode コードポイントだけで文字を表すことができます。(内部的には UTF-16 で保存されているので、下位サロゲートの部分に対して codePointAt メソッドを呼び出すと UTF-16 文字コードと同じ値を取得するようです)。

※ サロゲートペアについては「JavaScriptにおけるサロゲートペアとは」を参照されてください。

-- --

String オブジェクトの charCodeAt メソッドの使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。