將數字轉換成漢字的一段asp程式

2021-04-02 07:49:13 字數 2781 閱讀 2481

''將一串數字轉成對應的漢字

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...