全角から半角へ変換

(注意)今日のエントリーはWindows以外で文字バケする可能性あり。

某部署の某Webアプリの入力時の処理に、「全角カナ」と「全角英数」が入力された場合は自動で「半角」に変換される機能を付け加えることになった。

変換をしてくれる関数を探してみたが、どうやらJavascriptには存在しないらしい。

こちらのページを参考に変換処理を作成してみた。
http://www.openspc2.org/reibun/javascript/business/004/index.html

以下その処理。

  function toHankaku(motoText){
    han = “アイウエオカキクケコサシスセソタチツテトナニヌネノ”;
    han+ = “ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ”;
    han+ = “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
    han+ = “abcdefghijklmnopqrstuvwxyz.。”;
    txt = “アイウエオカキクケコサシスセソタチツテトナニヌネノ”;
    txt+= “ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ”;
    txt+= “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
    txt+= “abcdefghijklmnopqrstuvwxyz.。”;
    han1 = “カキクケコサシスセソタチツテトハヒフヘホ”;
    txt1 = “ガギグゲゴザジズゼゾダヂヅデドバビブベボ”;
    han2 = “ハヒフヘホ”;
    txt2 = “パピプペポ”;
    str = “”;
    for (i=0; i<motoText.length; i++){
      c = motoText.charAt(i);
      n = txt.indexOf(c,0);
      if (n >= 0){
        c = han.charAt(n);
      }
      else{
        n = txt1.indexOf(c,0);
        if (n >= 0){
          c = han1.charAt(n) + “゙”;
        }
        else{
          n = txt2.indexOf(c,0);
          if (n >= 0){
            c = han2.charAt(n) + “゚”;
          }
        }
      }
      str += c;
    }
    return str;
  }



関連エントリー