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









