當(dāng)前位置:軟件學(xué)堂 > 資訊首頁(yè) > 網(wǎng)絡(luò)編程 > 編程其他 > 小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

2012/11/7 11:12:40作者:佚名來(lái)源:網(wǎng)絡(luò)

移動(dòng)端

【實(shí)例名稱】

小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

【實(shí)例描述】

大寫金額是我國(guó)特有的一種金額表現(xiàn)形式。本例學(xué)習(xí)如何將阿拉伯?dāng)?shù)字形式的金額轉(zhuǎn)換為大寫金額。

【實(shí)例代碼】

<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>標(biāo)題頁(yè)-學(xué)無(wú)憂(wangbatian.cn)</title> </head> <body> <script language="JavaScript"> function daxie() {                                       //定義大寫數(shù)組   this.values = ["零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"];   this.digits = ["", "拾", "佰", "仟"]; }

function daxie.prototype.getDaXie(money) {   if(isNaN(money)) return "";                 //如果不是數(shù)值型,直接返回空   var number = Math.round(money*100)/100;     //取數(shù)值的整數(shù)   number = number.toString(10).split('.');  //整數(shù)和小數(shù)分開(kāi)   var moneyInt = number[0];                  //整數(shù)部分   var len = moneyInt.length;                 //整數(shù)的長(zhǎng)度   if (len > 12)                             //長(zhǎng)度如果超出范圍     return "數(shù)值超出范圍!支持的最大數(shù)為 999999999999.99!";   var returnValue = this.millonTrans(moneyInt.slice(-4));   if (len > 4)                                          //多于萬(wàn)位     returnValue = this.millonTrans(moneyInt.slice(-8,-4)) + (moneyInt.slice(-8,-4)!="0000"?"萬(wàn)":"") + returnValue;   if (len > 8)                                          //多于億位     returnValue = this.millonTrans(moneyInt.slice(-12,-8)) + "億" + returnValue;   if(returnValue!="")     returnValue += "圓";                                //添加最后一個(gè)字符   if(number.length==2)                                  //是否是帶小數(shù)的金額   {     var cok = number[1].split('');     if(returnValue!="" || cok[0]!="0")       returnValue += this.values[parseInt(cok[0])] + (cok[0]!="0"?"角":"");//十位數(shù)顯示角     if(cok.length>=2)       returnValue += this.values[parseInt(cok[1])] + "分";                  //個(gè)位數(shù)顯示分   }   if(returnValue!="" && !/分$/.test(returnValue))           //使用正則判斷是否有小數(shù)     returnValue += "整";   return returnValue; }

function daxie.prototype.millonTrans(strTemp) {   var money = strTemp.split('');                                //將金額轉(zhuǎn)換為數(shù)組   var mLength = money.length-1;                                 //金額的長(zhǎng)度   var returnValue = "";   for (var i=0; i<=mLength; i++)                                //遍歷每個(gè)元素     returnValue += this.values[parseInt(money[i])] + (money[i]!='0'?this.digits[mLength-i]:"");   returnValue = returnValue.replace(/零+$/, ""). replace(/零{2,}/, "零");//返回轉(zhuǎn)換后的數(shù)值   return returnValue; }

var stmp = ""; var daXieM = new daxie(); function strTrans(strT) {   if(strT.value==stmp) return;   var ms = strT.value.replace(/[^\d\.]/g,""). replace(/(\.\d{2}).+$/,"$1");//驗(yàn)證用戶的輸入   var txt = ms.split(".");       //分割成數(shù)組   while(/\d{4}(,|$)/.test(txt[0]))     txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2");  //科學(xué)計(jì)數(shù)法表示形式   strT.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");   daxieTxt.value = daXieM.getDaXie(parseFloat(ms));   //顯示大寫 } </script> 小寫金額:<input type="text" name="xiaoxieTxt" onkeyup="strTrans(this)"><br> 大寫金額:<input type="text" name="daxieTxt" size=60 readonly></body> </html>

 

 

【運(yùn)行效果】

 小寫金額轉(zhuǎn)為大寫金額運(yùn)行效果

【難點(diǎn)剖析】

本例使用“getDaXie”和“millonTrans”方法實(shí)現(xiàn)數(shù)值型數(shù)據(jù)的判斷,包括如何判斷萬(wàn)位數(shù)、億位數(shù)等。代碼中多次使用正則表達(dá)式實(shí)現(xiàn)字符的搜索和替換,有關(guān)正則表達(dá)式的使用,請(qǐng)參考詳細(xì)資料。

【源碼下載】

為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:小寫金額轉(zhuǎn)為大寫金額JS代碼 進(jìn)行本實(shí)例源碼下載