中文数字转换阿拉伯数字_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 中文数字转换阿拉伯数字

中文数字转换阿拉伯数字

 2011/8/10 17:30:52  xulei3244  http://goxl.iteye.com  我要评论(0)
  • 摘要:require'rubygems'require'jcode'$KCODE='u'defmain(str)num=0ifstr.to_s.match("亿")str.to_s.match(/(.+)亿(.+)/)num1=conv($1.to_s)*100000000num2=conv($2.to_s)num=num1+num2elsenum=conv(str.to_s)endreturnnumenddefconv(str)num=0temp_num=0i=0str_length=str
  • 标签:中文数字转阿拉伯数字
require 'rubygems'
require 'jcode'
$KCODE='u'
def main(str)
   num=0
   if str.to_s.match("亿")
     str.to_s.match(/(.+)亿(.+)/)
     num1=conv($1.to_s)*100000000
     num2=conv($2.to_s)
     num=num1+num2
   else
     num=conv(str.to_s)
   end
   return num
 end
 
 def conv(str)
   num=0
   temp_num=0
   i=0
   str_length=str.each_char.count
   str.each_char do |n|    
     ch,ch_type=num_type(n)
     if ch_type==1 
       temp_num=ch
       num+=ch if i==str_length-1
     elsif ch_type==0
       num+=temp_num*ch if ch < num
       num=(num+temp_num)*ch if ch >num
       temp_num=0
     end
     i+=1
   end
   return num
 end
 
 def num_type(str)
       case str
       when "万"
          return 10000,0
       when "千"
          return 1000,0   
       when "百"
          return 100,0           
       when "十"
          return 10,0
       else
          return num(str),1
         end
 end
 
 def num(str)
   return result=case str
     when "一"
         1
     when "二"
         2   
     when "三"
         3           
     when "四"
         4
     when "五"
         5
     when "六"
         6
     when "七"
         7
     when "八"
         8
     when "九"
         9
     when "零"          
         0          
     end
 end
 
 puts main("三千零九十万六千四百零三亿九千零三万零五百零一")
  • 相关文章
发表评论
用户名: 匿名