vbscript|大寫|金額|小寫
<%
'--------------------數字向漢字轉換的函數集合 ------------------------
'作者:northsnow
'日期:20061007
'調用方法: a=convertNumToStr("1234.5678")
'功能: 將這樣的串 1234.5678 轉換成 壹仟貳佰三拾肆元伍角陸分
''將一串數字轉成對應的漢字
Function convertNumToStr()function convertNumToStr(pNum)
dim oNum,rValue
oNum=pNum:rValue=""
'如果給定的不是合理的數字,則返回空串
const z_PatNum="^d+(.{1}d+)?$"
set r=new regexp
r.Pattern=z_PatNum
r.IgnoreCase=false
r.Global=false
if not r.Test(oNum) 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
rValue=rValue & "元"
'轉換小數點後面的
if backNum<>"" then
strBack=""
if len(backnum)>2 then
backnum=left(backnum,2)
end if
for i=1 to len(backNum)
strBack=strBack & convertNumToCC(mid(backNum,i,1)) & getDigit2(i)
next
rValue=rValue & strBack
else
rValue=rValue & "整"
end if
convertNumToStr=rValue
end function
''將一個數字轉成對應的漢字
Function convertNumToCC()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()function getDigit(oDigit)
if oDigit=1 then
elseif (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
Function getDigit2()function getDigit2(oDigit)
if oDigit=1 then
getDigit2="角"
elseif oDigit=2 then
getDigit2="分"
end if
end function
dim aaa
aaa="108765.54"
response.Write aaa
response.Write convertNumToStr(aaa)
%>