その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

JavaScriptで\x特殊文字と同等の事を\xを使わずに実現する

JavaScriptの文字列中では\xという特殊文字が利用できます.ドキュメントによると,

\xXX 00 から FF までの 2 桁の 16 進数 XX で指定された、Latin-1 エンコーディングの文字。例えば、\xA9 は著作権記号を示します。

とのことで,まあここに書いてある通りの動作をします.

例:

"\xa9";
// => "©" 


ところでこの\xは文字列連結等では利用できない,つまり

"\x" + "a9";
// => ERROR!

という風には使えないわけです.そりゃそうだ.
どっこい変数の中身を\xに適用したい時などに困るわけですね.


そういう時は以下のようにすることで代用が可能です.

var charCode = "0x" + "a9"; // <= これは文字列
String.fromCharCode(parseInt(charCode, 16));

0xから始まる16進数の文字コードを表す文字列をparseInt()に与えて10進数の文字コード数値に変換し,更にそれをString.fromCharCode()に食わせる事で,所望の文字を得ることが出来るという感じです.


[追記] parseInt()の基底を16にしておけば"0x"をプレフィックスで付ける必要は無かった.

var charCode = "a9"; // <= これは文字列
String.fromCharCode(parseInt(charCode, 16));

16進数の文字コードを表す文字列 ("00"〜"ff") を基底16進のparseInt()に与えて10進数の文字コード数値に変換し,更にそれをString.fromCharCode()に食わせる事で,所望の文字を得ることが出来るという感じです.


無駄に詰まったのでここに記す.