捨て仮名を変換する関数

Pocket

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

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;
}

[ 2022年7月15日 | カテゴリー: PHP, Python | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報