| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖, 1 人收藏
标题:高手请教!阿拉伯数字自动转换成中文大写的问题?急!
只看楼主 加入收藏
弥加辣瓜
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-12
结帖率:0
收藏(1)
已结贴  问题点数:0 回复次数:2 
高手请教!阿拉伯数字自动转换成中文大写的问题?急!
高手请教,想输入阿拉伯数字后,自动生成中文大写,因为是新手,学习中,不知道怎么实现,能给个代码嘛,可以好好学习!!!自己的要求不是很高,可以不用数据库,就是在静态页面的输入框中输入阿拉伯数字的金额,然后再它的后面显示出大写金额,这样实现就可以可以了,就谢谢!
搜索更多相关主题的帖子: 阿拉伯 中文大写 数据库 学习 
2011-08-12 11:24
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:10 
程序代码:
'主函数
'调用方法
'Response.Write ConvertSum(CStr(123.50))
Function ConvertSum(str) 
  if IsPositveDecimal(str)=False Then 
     ConvertSum="输入的不是正数字!"
  Else  
     if CDbl(str)>999999999999.99 Then 
        ConvertSum="数字太大,无法换算,请输入一万亿元以下的金额"
     else  
        Dim splitstr '定义按小数点分割后的字符串数组 
        splitstr=Split(str,".")'按小数点分割字符串    
        if UBound(splitstr)=0 Then'只有整数部分 
            ConvertSum=ConvertData(str)&"圆整"
        else '有小数部分 
            Dim rstr
            rstr=ConvertData(splitstr(0))&""'转换整数部分 
            rstr=rstr&ConvertXiaoShu(splitstr(1))'转换小数部分 
            ConvertSum=rstr
        End IF
     End IF
  End IF  
End Function

'判断是否是正数字字符串 
'判断字符串 
'如果是数字,返回true,否则返回false 
Function IsPositveDecimal(str) 
  On Error Resume Next
  IF VarType(CInt(str))<>2 Then 
     IsPositveDecimal=False
  Else
     IsPositveDecimal=True
  End IF
End Function

'转换数字(整数) 
'需要转换的整数数字字符串 
'转换成中文大写后的字符串 
Function ConvertData(str) 
  Dim tmpstr 
  Dim rstr 
  Dim strlen
  strlen=Len(str) 
  if strlen<=4 Then'数字长度小于四位 
     rstr=ConvertDigit(str)
  else 
     if strlen<=8 Then '数字长度大于四位,小于八位 
        tmpstr=Mid(str,strlen-4,4)'先截取最后四位数字 
        rstr=ConvertDigit(tmpstr)'转换最后四位数字 
        tmpstr=Mid(str,1,strlen-4)'截取其余数字 
        '将两次转换的数字加上萬后相连接 
        rstr=ConvertDigit(tmpstr)&""&rstr
        rstr=Replace(rstr,"零萬","")
        rstr=Replace(rstr,"零零","") 
    else 
        if strlen<=12 Then'数字长度大于八位,小于十二位 
           tmpstr=Mid(str,strlen-4,4)'先截取最后四位数字 
           rstr=ConvertDigit(tmpstr)'转换最后四位数字 
           tmpstr=Mid(str,strlen-8,4)'再截取四位数字 
           rstr=ConvertDigit(tmpstr)&""&rstr
           tmpstr=Mid(str,1,strlen-8)
           rstr=ConvertDigit(tmpstr)&""&rstr
           rstr=Replace(rstr,"零億","")
           rstr=Replace(rstr,"零萬","")
           rstr=Replace(rstr,"零零","")
           rstr=Replace(rstr,"零零","")
       End IF 
   End IF 
End IF
strlen=Len(rstr) 
if strlen>=2 Then 
    select case Mid(rstr,strlen-2,2)
        case "佰零"
           rstr=Mid(rstr,1,strlen-2)&"" 
        case "仟零"
           rstr=Mid(rstr,1,strlen-2)&"" 
        case "萬零"
           rstr=Mid(rstr,1,strlen-2)&"" 
        case "億零"
           rstr=Mid(rstr,1,strlen-2)&"" 
     End select
  End IF 
  ConvertData=rstr
End Function 
'转换数字(小数部分) 
'需要转换的小数部分数字字符串 
'转换成中文大写后的字符串 
Function ConvertXiaoShu(str) 
  Dim strlen
  strlen=Len(str) 
  Dim rstr 
  if strlen=1 Then 
      rstr=ConvertChinese(str)&"" 
      ConvertXiaoShu=rstr
  else 
     Dim tmpstr
     tmpstr=Mid(str,1,1) 
     rstr=ConvertChinese(tmpstr)&"" 
     tmpstr=Mid(str,2,1) 
     rstr=rstr&ConvertChinese(tmpstr)&"" 
     rstr=Replace(rstr,"零分","")
     rstr=Replace(rstr,"零角","")
     ConvertXiaoShu=rstr
  End If
End Function

'转换数字 
'转换的字符串(四位以内)  
Function ConvertDigit(str) 
  Dim strlen
  strlen=Len(str) 
  Dim rstr 
  select case strlen  
      case 1 
        rstr=ConvertChinese(str) 
      case 2
        rstr=Convert2Digit(str) 
      case 3
        rstr=Convert3Digit(str) 
      case 4
        rstr=Convert4Digit(str) 
    end select
    rstr=Replace(rstr,"拾零","")
    strlen=Len(rstr) 
    ConvertDigit=rstr
End Function 

'转换四位数字  
Function Convert4Digit(str) 
  Dim str1,str2,str3,str4
  str1=Mid(str,1,1)
  str2=Mid(str,2,1)
  str3=Mid(str,3,1)
  str4=Mid(str,4,1)
  Dim rstring 
  rstring=rstring&ConvertChinese(str1)&"" 
  rstring=rstring&ConvertChinese(str2)&""
  rstring=rstring&ConvertChinese(str3)&""
  rstring=rstring&ConvertChinese(str4)
  rstring=Replace(rstring,"零仟","") 
  rstring=Replace(rstring,"零佰","")
  rstring=Replace(rstring,"零拾","")
  rstring=Replace(rstring,"零零","")
  rstring=Replace(rstring,"零零","")
  rstring=Replace(rstring,"零零","")
  Convert4Digit=rstring 
End Function 

'转换三位数字 
Function Convert3Digit(str) 
  Dim str1,str2,str3
  str1=Mid(str,1,1)
  str2=Mid(str,2,1)
  str3=Mid(str,3,1) 
  Dim rstring
  rstring=rstring&ConvertChinese(str1)&"" 
  rstring=rstring&ConvertChinese(str2)&"" 
  rstring=rstring&ConvertChinese(str3) 
  rstring=Replace(rstring,"零佰","") 
  rstring=Replace(rstring,"零拾","") 
  rstring=Replace(rstring,"零零","") 
  rstring=Replace(rstring,"零零","")
Convert3Digit=rstring 
End Function 

'转换二位数字 
Function Convert2Digit(str) 
  Dim str1,str2
  str1=Mid(str,1,1) 
  str2=Mid(str,2,1)
  Dim rstring 
  rstring=rstring&ConvertChinese(str1)&"" 
  rstring=rstring&ConvertChinese(str2)
  rstring=Replace(rstring,"零拾","")
  rstring=Replace(rstring,"零零","") 
  Convert2Digit=rstring 
End Function 

'将一位数字转换成中文大写数字 
Function ConvertChinese(str) 
  '"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" 
  Dim cstr
  select case(str) 
     case "0"
        cstr=""
     case "1"
        cstr=""
     case "2"
        cstr="" 
     case "3"
        cstr=""
     case "4" 
        cstr="" 
     case "5"
        cstr="" 
     case "6"
        cstr=""
     case "7"
        cstr="" 
     case "8" 
        cstr=""
     case "9" 
        cstr="" 
   end select
  ConvertChinese=cstr
End Function

测试后的代码

[ 本帖最后由 yms123 于 2011-8-12 13:36 编辑 ]
2011-08-12 13:01
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:10 
版主提供的这个东东太有用了,收藏,谢谢!

我的ASP小站:http://www./
2011-08-14 13:55
快速回复:高手请教!阿拉伯数字自动转换成中文大写的问题?急!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016042 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved