将数字转换成汉字的一段ASP程序

2008-02-23 09:46:56来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

'--------------------数字向汉字转换的函数集合 ------------------------
'作者:northsnow
'日期:20051217
'调用方法: a=convertNumToStr("1234.5678")
'功能: 将这样的串 1234.5678 转换成 一千二百三十四点五六七八


''将一串数字转成对应的汉字
function convertNumToStr(pNum)
dim oNum,rValue
oNum=pNum:rValue=""

'如果给定的不是合理的数字,则返回空串
if not CheckPattern(oNum,z_PatNum) then
ConvertNumToStr=rValue
exit function
end if

'将数字前面无用的0去掉
set rLjc=new RegExp
rLjc.Pattern="^0{2,}([^.])"
oNum=rLjc.Replace(oNum,"$1")
rLjc.Pattern="^0{2,}(\.)"
oNum=rLjc.Replace(oNum,"0$1")

'将小数点前后部分分开
arrNum=split(oNum,".")
frontNum=arrNum(0)
backNum=""
if ubound(arrNum)>0 then backNum=arrNum(1)

'---- 转换小数点前面的数----
oLen=len(frontNum)

if oLen=1 then '只有一位
rValue=convertNumToCC(frontNum)
elseif oLen=2 then '只有两位
if(mid(frontNum,1,1))<>"1" then rValue=convertNumToCC(mid(frontNum,1,1))
rValue=rValue & getDigit(2)
if(mid(frontNum,2,1))<>"0" then rValue=rValue & convertNumToCC(mid(frontNum,2,1))
else '大于两位的情况
dim curPos,curNum,hasZero
hasZero=false '表明在此前有没有相连接的零
for i=1 to oLen
curPos=oLen-i 1
curNum=mid(frontNum,i,1)
if cint(curNum)=0 then '当前位数为零
hasZero=true
'当当前位为万位或者亿位,则进行处理
if (curPos -1) mod 4=0 and curPos>4 then
rValue=rValue & getDigit(curPos)
end if
else '当前位数不是零
if hasZero then
rValue=rValue & "零"
hasZero=false
end if
rValue=rValue & convertNumToCC(curNum) & getDigit(curPos)
end if
next
end if

'转换小数点后面的
if backNum<>"" then
strBack=""
for i=1 to len(backNum)
strBack=strBack & convertNumToCC(mid(backNum,i,1))
next
rValue=rValue & "点" & strBack
end if
convertNumToStr=rValue
end function


''将一个数字转成对应的汉字
function convertNumToCC(pNum)
select case pNum
case 1:convertNumToCC="一"
case 2:convertNumToCC="二"
case 3:convertNumToCC="三"
case 4:convertNumToCC="四"
case 5:convertNumToCC="五"
case 6:convertNumToCC="六"
case 7:convertNumToCC="七"
case 8:convertNumToCC="八"
case 9:convertNumToCC="九"
case 0:convertNumToCC="零"
end select
end function

'根据位数返回对应的汉字
function getDigit(oDigit)
if (oDigit 2) mod 4=0 then
getDigit="十"
elseif (oDigit 1) mod 4=0 then
getDigit="百"
elseif oDigit mod 4=0 then
getDigit="千"
elseif (oDigit -1) mod 4=0 then
if ((oDigit-1)/4) mod 2=0 then
getDigit="亿"
else
getDigit="万"
end if
end if
end function

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用ASP XMLHTTP编写一个天气预报程序

下一篇:数据定型在asp中的应用