String.fromCharCode()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
String.fromCharCode()
静的メソッドは、指定された UTF-16 コード単位の並びから生成された文字列を返します。
試してみましょう
構文
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)
引数
numN
-
UTF-16 コード単位を表す数値の並びです。範囲は
0
から65535
(0xFFFF
) までです。数値が0xFFFF
を超えた場合は切り捨てられます。妥当性チェックは行われません。
返値
指定された N
個の UTF-16 コード単位から生成された、長さ N
の文字列です。
解説
fromCharCode()
は String
の静的メソッドなので、自分で生成した String
オブジェクトのメソッドではなく、常に String.fromCharCode()
として使用するようにしてください。
Unicode のコードポイントは 0
から 1114111
(0x10FFFF
) までの範囲です。charAt()
は常に 65536
より小さい値を返しますが、これは上位のコードポイントは 16 ビットのサロゲート擬似文字のペアによって表されているからです。したがって、65535
より大きい値を持つ完全な文字を取得するには、charAt(i)
だけでなく charAt(i + 1)
も取得するか(2 つの文字を持つ文字列を操作する場合と同じです)、または codePointAt(i)
と String.fromCodePoint()
を使用する必要があります。Unicode に関する情報はUTF-16 文字、Unicode コードポイント、書記素クラスターを参照してください。
fromCharCode()
は 16 ビット値のみで動作するため(\u
エスケープシーケンスと同様)、補助文字を返すためにはサロゲートペアが必要です。例えば、String.fromCharCode(0xD83C, 0xDF03)
と \uD83C\uDF03
はコードポイント U+1F303
"Night with Stars" です。補助コードポイントの値(例: 0x1f303
)とそれを表す両方のサロゲート値(例: 0xd83c
や 0xdf03
)との間には数学的な関係がありますが、補助コードポイントを使用するたびにサロゲートペアの値を計算したり参照したりする、余分なステップが必要になります。このため、実際のコードポイント値に基づいて補助文字を返すことができる String.fromCodePoint()
を使用した方が便利です。例えば、 String.fromCodePoint(0x1f303)
はコードポイント U+1F303
"Night with Stars" を返します。
例
fromCharCode() の使用
BMP 文字は、 UTF-16 では単一のコード単位を使用します。
String.fromCharCode(65, 66, 67); // "ABC" を返す
String.fromCharCode(0x2014); // "—" を返す
String.fromCharCode(0x12014); // これも "—" を返す。1 の桁は削除され無視される
String.fromCharCode(8212); // これも "—" を返す。8212 は 0x2014 の 10 進数形
補助文字は、 UTF-16 では、 2 つのコード単位(すなわちサロゲートペア)を必要とします。
String.fromCharCode(0xd83c, 0xdf03); // Code Point U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" === "\uD83C\uDF03"
String.fromCharCode(0xd834, 0xdf06, 0x61, 0xd834, 0xdf07); // "\uD834\uDF06a\uD834\uDF07"
仕様書
Specification |
---|
ECMAScript Language Specification # sec-string.fromcharcode |
ブラウザーの互換性
BCD tables only load in the browser