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 - +   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)

%
>
 

你可能感兴趣的:(vbscript下将小写金额转成大写金额)