Ruby で半角カナを全角カナに,全角数字を半角数字に変換
Ruby を使って次のことを行う関数を定義します.
- 半角カナを全角カナに変換
- 全角数字を半角数字に変換
nkf の主要なオプション
- j,s,e,w: 出力コードは JIS 7 ビット(デフォルト),Shift_JIS, EUC-JP, UTF-8
- J,S,E,W: 入力される文字コードとして JIS 7 ビット(デフォルト),Shift_JIS, EUC-JP, UTF-8 を仮定する(自動推定しない)
- -X: 半角カナ (X0201) を全角に変換する (デフォルト)
- -x: 半角カナ (X0201) を半角カナのまま残す
- -m: MIME 文字列をデコードする (デフォルト)
- -m0: MIME 文字列をデコードしない
- Z[0-3]: X0208 alphabet を ASCII に変換
【ソースコード】
#! ruby -Ks # coding: windows-31j require 'pp' require 'nkf' def hankana_to_zenkana(s) # 半角カナを全角カナに変換.nkf を使用 # 「Ss」はShift_JIS. # UTF-8 なら「Ww」に書き換えてください. # EUC-JP なら 「Ee」に書き換えてください. # nkf については http://www.ruby-lang.org/ja/man/html/nkf.html return NKF::nkf( '-SsXm0', s ) end def zensuji_to_han(s) # 全角数字を半角数字に変換.nkf を使用 return NKF::nkf( '-Ssxm0Z0', s ) end if __FILE__ == $0 # 半角カナを全角カナに変換 print "コンニチハ\n" print hankana_to_zenkana "コンニチハ\n" # 「"① ② I Ⅱ ㍉ ㌢ ㈱"」は Shift_JIS にはなく,Shift_JIS を拡張した文字コードセットにある print "① ② I Ⅱ ㍉ ㌢ ㈱\n" print hankana_to_zenkana "① ② I Ⅱ ㍉ ㌢ ㈱\n" # 「"‖ 〜 − ¢ £ ¬ " 」は Shift_JIS, EUC-JP, ISO-2022-JP では同じ文字コードなのに Windows-31J では違う文字コード print "‖ 〜 − ¢ £ ¬ \n" print hankana_to_zenkana "‖ 〜 − ¢ £ ¬ \n" # その他 print "表 〒\n" print hankana_to_zenkana "表 〒\n" # 全角数字を半角数字に変換 print "12345 こんにちは ① ② I Ⅱ ㍉ ㌢ ㈱ ‖ 〜 − ¢ £ ¬ 表 〒\n" print zensuji_to_han "12345 こんにちは ① ② I Ⅱ ㍉ ㌢ ㈱ ‖ 〜 − ¢ £ ¬ 表 〒\n" end
【実行結果の例】
