金子邦彦研究室プログラミングRuby プログラミングRuby で半角カナを全角カナに,全角数字を半角数字に変換

Ruby で半角カナを全角カナに,全角数字を半角数字に変換

Ruby を使って次のことを行う関数を定義します.


nkf の主要なオプション

【ソースコード】

#! 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

【実行結果の例】

[image]