JavaScriptの文字コード操作(charCodeAt, fromCharCode)を初心者向けに解説
生徒
「先生、文字ってコンピュータの中ではどうやって扱われているんですか?」
先生
「文字はコンピュータの中では数字として扱われています。その数字のことを文字コードと言います。JavaScriptではcharCodeAtやfromCharCodeを使って文字と数字を相互に変換できます。」
生徒
「具体的にはどういう使い方をするんですか?」
先生
「それでは、基本から順番に見ていきましょう。」
1. charCodeAtとは?文字を数字に変換する方法
charCodeAtメソッドは、文字列の指定した位置の文字をUnicode(ユニコード)という規格の数値に変換します。
例えば、「A」はUnicodeで65、「あ」は12354となります。
この方法を覚えると文字の順番や並べ替え、暗号化などの処理に応用できます。
const str = "ABC";
console.log(str.charCodeAt(0)); // Aの文字コード
console.log(str.charCodeAt(1)); // Bの文字コード
console.log(str.charCodeAt(2)); // Cの文字コード
65
66
67
上の例では、文字列"ABC"の0番目、1番目、2番目の文字の文字コードを取得しています。
文字コードを知ると、文字の比較や並べ替えが簡単になります。
2. fromCharCodeとは?数字を文字に変換する方法
fromCharCodeはcharCodeAtの逆で、数字から文字に変換できます。
文字コードを知ったあとに文字に戻したいときに使います。
console.log(String.fromCharCode(65)); // A
console.log(String.fromCharCode(66)); // B
console.log(String.fromCharCode(67)); // C
A
B
C
このように、数字から文字を生成することも可能です。複数の文字コードを一度に変換することもできます。
3. 文字コードを使った簡単な文字列操作の例
文字コードを使うと、文字の並べ替えやシフト(文字をずらす)などが簡単にできます。 例えば、アルファベットを1文字ずつシフトさせる簡単な暗号を作ることもできます。
const text = "ABC";
let encrypted = "";
for (let i = 0; i < text.length; i++) {
// 文字コードを取得して1加算し、新しい文字に変換
encrypted += String.fromCharCode(text.charCodeAt(i) + 1);
}
console.log(encrypted); // BCD
BCD
上の例では、charCodeAtで文字コードを取得し、1を足してからfromCharCodeで文字に戻しています。
このように、文字コードを使えば文字列を自由に加工することが可能です。
4. 文字コードの範囲と注意点
JavaScriptの文字コードはUnicodeに基づいています。ASCIIコード(英数字や記号)は0~127の範囲ですが、日本語や絵文字などはそれ以上の数値になります。
charCodeAtはサロゲートペア(2つのコードで1文字を表す文字)には注意が必要ですが、基本的な英数字や日本語では問題なく使用できます。
5. まとめて文字コードを取得・変換する方法
複数文字を一度に文字コードに変換したり、逆に文字コードから文字列を生成することも可能です。
const text2 = "HELLO";
const codes = [];
for (let i = 0; i < text2.length; i++) {
codes.push(text2.charCodeAt(i));
}
console.log(codes); // [72, 69, 76, 76, 79]
const restored = codes.map(code => String.fromCharCode(code)).join("");
console.log(restored); // HELLO
[72, 69, 76, 76, 79]
HELLO
このように、文字コードを利用することで文字列操作の幅が広がります。暗号化、文字の並べ替え、カスタムの文字処理などさまざまな場面で活用可能です。