JavaScriptでカタカナの半角と全角を相互に変換

JavaScriptでカタカナの半角と全角を相互に変換する関数を書いてみました。
ポイントは半角カタカナの濁音、半濁音は2文字であること。そのため、こちらを先に変換します。
長音にも対応していますが「-」(半角ハイフン)には対応していません。

function convert_katakana_han_zen(str, option) {
  //option=0:半角から全角, 1:全角から半角
  var pairs, pairs_length, i, before, after;
  option = option == 0 ? 0 : 1;
  pairs = [
    ["ガ", "ガ"],
    ["ギ", "ギ"],
    ["グ", "グ"],
    ["ゲ", "ゲ"],
    ["ゴ", "ゴ"],
    ["ザ", "ザ"],
    ["ジ", "ジ"],
    ["ズ", "ズ"],
    ["ゼ", "ゼ"],
    ["ゾ", "ゾ"],
    ["ダ", "ダ"],
    ["ヂ", "ヂ"],
    ["ヅ", "ヅ"],
    ["デ", "デ"],
    ["ド", "ド"],
    ["バ", "バ"],
    ["パ", "パ"],
    ["ビ", "ビ"],
    ["ピ", "ピ"],
    ["ブ", "ブ"],
    ["プ", "プ"],
    ["ベ", "ベ"],
    ["ペ", "ペ"],
    ["ボ", "ボ"],
    ["ポ", "ポ"],
    ["ヴ", "ヴ"],
    ["ー", "ー"],
    ["ァ", "ァ"],
    ["ア", "ア"],
    ["ィ", "ィ"],
    ["イ", "イ"],
    ["ゥ", "ゥ"],
    ["ウ", "ウ"],
    ["ェ", "ェ"],
    ["エ", "エ"],
    ["ォ", "ォ"],
    ["オ", "オ"],
    ["カ", "カ"],
    ["キ", "キ"],
    ["ク", "ク"],
    ["ケ", "ケ"],
    ["コ", "コ"],
    ["サ", "サ"],
    ["シ", "シ"],
    ["ス", "ス"],
    ["セ", "セ"],
    ["ソ", "ソ"],
    ["タ", "タ"],
    ["チ", "チ"],
    ["ッ", "ッ"],
    ["ツ", "ツ"],
    ["テ", "テ"],
    ["ト", "ト"],
    ["ナ", "ナ"],
    ["ニ", "ニ"],
    ["ヌ", "ヌ"],
    ["ネ", "ネ"],
    ["ノ", "ノ"],
    ["ハ", "ハ"],
    ["ヒ", "ヒ"],
    ["フ", "フ"],
    ["ヘ", "ヘ"],
    ["ホ", "ホ"],
    ["マ", "マ"],
    ["ミ", "ミ"],
    ["ム", "ム"],
    ["メ", "メ"],
    ["モ", "モ"],
    ["ャ", "ャ"],
    ["ヤ", "ヤ"],
    ["ュ", "ュ"],
    ["ユ", "ユ"],
    ["ョ", "ョ"],
    ["ヨ", "ヨ"],
    ["ラ", "ラ"],
    ["リ", "リ"],
    ["ル", "ル"],
    ["レ", "レ"],
    ["ロ", "ロ"],
    ["ワ", "ヮ"],
    ["ワ", "ワ"],
    ["イ", "ヰ"],
    ["エ", "ヱ"],
    ["ヲ", "ヲ"],
    ["ン", "ン"],
    ["カ", "ヵ"],
    ["ケ", "ヶ"]
  ];
  pairs_length = pairs.length;
  for(i = 0; i < pairs_length; i++) {
    before = new RegExp(pairs[i][option], "g");
    after = pairs[i][1 - option];
    str = str.replace(before, after);
  }
  return str;
}

コメント

タイトルとURLをコピーしました