幼稚園時代「何組」でしたか?

Ruby1.9で全角文字を半角文字にうまく変換できません。

英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。
何か良い知恵をどうかご教示のほどお願いいたします。

※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。
moji = "イあ1Aa"
moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★')

結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。
   ※アの場合のみ正しく半角のアに変換される。

A 回答 (1件)

カナは文字コード表上でアルファベットの様に半角と全角で同じ順番に並んでいるわけではないので、trで単純に変換できません。




# coding: Windows-31J
require 'nkf'

input = "アイゥェォバヴァポヲ".encode('Shift_JIS')
output = NKF.nkf('-SsZ4',input ).encode('Windows-31J')
puts output

ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32]の環境で確認しました。
エンコードは適宜変更して下さい。
    • good
    • 0
この回答へのお礼

例題付きで回答有難う御座います。
とても勉強になりました。

お礼日時:2010/08/02 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!