数字を漢数字に変換する

漢数字を数字に変換するメソッドは見つけたんだけど、逆がなかったので作ってみた。1 から 9999 まで対応版。

# coding : utf-8

def num_to_k(n)
  number = 0..9
  kanji = ["","","","","","","","","",""]
  num_kanji = Hash[number.zip(kanji)]
  digit = [1000,100,10]
  # digit = (1..3).map{ |i| 10 ** i }.reverse
  kanji_keta = ["","",""]
  num_kanji_keta = Hash[digit.zip(kanji_keta)]
  num = n
  str = ""
  digit.each { |d|
    tmp = num / d
    str << (tmp == 0 ? "" : ((tmp == 1 ? "" : num_kanji[tmp]) + num_kanji_keta[d]))
    num %= d
  }
  str << num_kanji[num]
  return str
end

2013/07/02 追記 : ハッシュを利用して書き変えました。