捨て仮名を変換する関数

捨て仮名(小字、小文字)を通常の文字(大字、大文字)に変換する関数を考えました。

Python

def kana_upper(text):
  pairs = (("ぁ", "あ"), ("ァ", "ア"), ("ァ", "ア"), ("ぃ", "い"), ("ィ", "イ"), ("ィ", "イ"), ("ぅ", "う"), ("ゥ", "ウ"), ("ゥ", "ウ"), ("ぇ", "え"), ("ェ", "エ"), ("ェ", "エ"), ("ぉ", "お"), ("ォ", "オ"), ("ォ", "オ"), ("ヵ", "カ"), ("ㇰ", "ク"), ("ヶ", "ケ"), ("ㇱ", "シ"), ("ㇲ", "ス"), ("っ", "つ"), ("ッ", "ツ"), ("ッ", "ツ"), ("ㇳ", "ト"), ("ㇴ", "ヌ"), ("ㇵ", "ハ"), ("ㇶ", "ヒ"), ("ㇷ", "フ"), ("ㇷ゚", "プ"), ("ㇸ", "ヘ"), ("ㇹ", "ホ"), ("ㇺ", "ム"), ("ゃ", "や"), ("ャ", "ヤ"), ("ャ", "ヤ"), ("ゅ", "ゆ"), ("ュ", "ユ"), ("ュ", "ユ"), ("ょ", "よ"), ("ョ", "ヨ"), ("ョ", "ヨ"), ("ㇻ", "ラ"), ("ㇼ", "リ"), ("ㇽ", "ル"), ("ㇾ", "レ"), ("ㇿ", "ロ"), ("ゎ", "わ"), ("ヮ", "ワ"))
  for pair in pairs:
    text = text.replace(pair[0], pair[1])
  return text

このような場合、translateを使うとよいのですが、「ㇷ゚」が2文字にカウントされてしまい正しく動作しなかったのでこのようにしています。

JavaScript

function kana_upper(text){
  pairs = [["ぁ", "あ"], ["ァ", "ア"], ["ァ", "ア"], ["ぃ", "い"], ["ィ", "イ"], ["ィ", "イ"], ["ぅ", "う"], ["ゥ", "ウ"], ["ゥ", "ウ"], ["ぇ", "え"], ["ェ", "エ"], ["ェ", "エ"], ["ぉ", "お"], ["ォ", "オ"], ["ォ", "オ"], ["ヵ", "カ"], ["ㇰ", "ク"], ["ヶ", "ケ"], ["ㇱ", "シ"], ["ㇲ", "ス"], ["っ", "つ"], ["ッ", "ツ"], ["ッ", "ツ"], ["ㇳ", "ト"], ["ㇴ", "ヌ"], ["ㇵ", "ハ"], ["ㇶ", "ヒ"], ["ㇷ", "フ"], ["ㇷ゚", "プ"], ["ㇸ", "ヘ"], ["ㇹ", "ホ"], ["ㇺ", "ム"], ["ゃ", "や"], ["ャ", "ヤ"], ["ャ", "ヤ"], ["ゅ", "ゆ"], ["ュ", "ユ"], ["ュ", "ユ"], ["ょ", "よ"], ["ョ", "ヨ"], ["ョ", "ヨ"], ["ㇻ", "ラ"], ["ㇼ", "リ"], ["ㇽ", "ル"], ["ㇾ", "レ"], ["ㇿ", "ロ"], ["ゎ", "わ"], ["ヮ", "ワ"]]
  for(x in pairs){
    re = new RegExp(pairs[x][0], 'g')
    text = text.replace(re,pairs[x][1])
  }
  return text;
}

コメント

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