高手请教!阿拉伯数字自动转换成中文大写的问题?急!
高手请教,想输入阿拉伯数字后,自动生成中文大写,因为是新手,学习中,不知道怎么实现,能给个代码嘛,可以好好学习!!!自己的要求不是很高,可以不用数据库,就是在静态页面的输入框中输入阿拉伯数字的金额,然后再它的后面显示出大写金额,这样实现就可以可以了,就谢谢!
程序代码:
'主函数 '调用方法 '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 编辑 ]