JavaScriptで全角英数字を半角に変換する方法を考えてみました。
全角英数字は、0から9まで、AからZまで、aからzまで、が該当します。
一方、半角英数字は、0から9まで、AからZまで、aからzまで、が該当します。
これらの文字コードを調べると次の通りです。
全角 | コード | 半角 | コード |
---|---|---|---|
0 | 65296 | 0 | 48 |
9 | 65305 | 9 | 57 |
A | 65313 | A | 65 |
Z | 65338 | Z | 90 |
a | 65345 | a | 97 |
z | 65370 | z | 122 |
よく見ると、全角と半角のコードの差が全て65248なのです。
function zen2han(str){
return str.replace(/[0-z]/g,function($0){
return String.fromCharCode(parseInt($0.charCodeAt(0))-65248);
});
}
return str.replace(/[0-z]/g,function($0){
return String.fromCharCode(parseInt($0.charCodeAt(0))-65248);
});
}
[0-z] で全角の英数字がヒットします。
$0 でヒットした英数字を取得します。
$0.charCodeAt(0) で全角英数字の文字コードを取得します。parseInt で文字列を整数に変換しています。
65248を引くと半角英数字の文字コードが分かります。
String.fromCharCode で文字コードに該当する文字を取得します。
逆に半角英数字を全角にする場合は次のようにします。
function han2zen(str){
return str.replace(/[0-z]/g,function($0){
return String.fromCharCode(parseInt($0.charCodeAt(0))+65248);
});
}
return str.replace(/[0-z]/g,function($0){
return String.fromCharCode(parseInt($0.charCodeAt(0))+65248);
});
}
コメント