2015/08/20更新

[JavaScript] 英数字を全角から半角に変換するコードが、7行で実装できる

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
担当プロジェクトでソースレビューをしていて、とある人が書いてきた掲題の件について始めて見た書き方で、とても良かったのでブログに書きたいと思います。

画像


全角英数字→半角英数字をJavaScriptで書く

JavaScriptの文字コードはUnicode(UTF-16)ですが、その文字コード表の特性を活かすことで、全角英数字を半角英数字に変換することができます。具体的には、
全角英数字の文字コードから「0xFEE0」(=65248)を引くと半角英数字の文字コードになる
という特性です。これをJavaScriptで実装すれば、全角→半角の変換を実現することができます。


具体的に実装してみると以下のような処理になります。
// 全角→半角に変換する(7行で実装できる)
function zenkakuToHankaku(str) {
    var hankaku = '';
    str.split('').forEach(function (s) {
        hankaku += String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
    });
    return hankaku;
}

// 変換してみる
zenkakuToHankaku('ABCDE12345'); // "ABCDE12345"

// 一部の記号も半角に変換できる
zenkakuToHankaku('=!$+*%&'); // "=!$+*%&"
上記の通り、7行程度の処理で全角から半角への処理ができるのでなかなか便利です。もちろん、半角→全角への変換も同じように簡単な実装で実現できます。



最後に

以上、JavaScriptで英数字を全角→半角へ変換する実装方法の紹介でした。始めて見た時はこんな簡単な実装でできるのかと疑ってしまいましたが、文字コード表の特性を活かせばこんな感じにできるんですね。とても感心しました。

最後になりますが本ブログでは、フロントエンドのネタを中心に情報を発信しています。気になった方はぜひ、RSSTwitterをフォローして頂けますと幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。