''將一串數字轉成對應的漢字
function convertnumtostr(pnum)
dim onum,rvalue
onum=pnum:rvalue=""
'如果給定的不是合理的數字,則返回空串
const z_patnum="^/d+(/./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([^.])"
onum=rljc.replace(onum,"$1")
rljc.pattern="^0(/.)"
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=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
將漢字數字轉換成阿拉伯數字
前一段時間看乙個帖子上在討論這個演算法,跟帖的有一百多人。發的演算法也不下十個。不過我覺的這個是做好的乙個,總結如下。如有問題往大家校正!number 用來對映 一,二,三.unit用來對映十,百,千.struct number struct unit 下面是具體演算法部分,思路非常 簡單就是從右至...
一道筆試題 數字轉換成漢字
是2011金山校園招聘的筆試題。題目是這樣的 提供乙個數字10806,需要將該數字轉換成漢字如 壹萬零捌佰零陸。這個題目的關鍵就是零的處理。雖然我們平時說話不帶零,但是題目就這麼要求。沒辦法。實現如下 說下大概的想法 因為轉換的位置是相對固定的,所以可以採用列舉法。不清楚具體叫什麼,但是大概思想是這...
PHP將漢字轉換成Unicode編碼的函式
這是乙個將漢字轉換成unicode編碼的php函式,支援gbk和utf8編碼。function uni decode uncode create function dec return u dechex dec 1 uncode.return word 對 unicode 轉換為漢字 functio...