Ruby で全角英数字を半角英数字に変換する

全角英数字だけではなく、半角カタカナなど文字種の揺れを修正したい。

Moji モジュールを利用してみる。

サンプル

Windows XP 上で実行。文字コードを変換しているのは、コマンドプロンプトに実行結果を表示させるため。
コード sample.rb

$KCODE = 'u';

require 'moji'
require 'nkf'

string = 'ABCDEFG−!? kakikukeko あいうえおアカサタナ123456'

str_1 = Moji.zen_to_han(string, Moji::ZEN_ALPHA)
puts NKF.nkf('-s', str_1)

str_2 = Moji.han_to_zen(str_1, Moji::HAN_KATA)
puts NKF.nkf('-s', str_2)

str_3 = Moji.zen_to_han(str_2, Moji::ZEN_ASYMBOL)
puts NKF.nkf('-s', str_3)

str_4 = Moji.zen_to_han(str_3, Moji::ZEN_NUMBER)
puts NKF.nkf('-s', str_4)

実行結果。

C:\>ruby "test.rb"
ABCDEFG−!? kakikukeko あいうえおアカサタナ123456
ABCDEFG−!? kakikukeko あいうえおアカサタナ123456
ABCDEFG-!? kakikukeko あいうえおアカサタナ123456
ABCDEFG-!? kakikukeko あいうえおアカサタナ123456