/*小写转大写*/
var xcc= \"12.22\"; document.write(xcc+\"=>\"+formatRMB(xcc)+\"<br/>\");
/*大写转小写*/
var rrrr = \"壹拾贰元贰角贰分\"; document.write(rrrr+\"=>\"+parseRMB(rrrr));
输出结果:
12.22=>壹拾贰元贰角贰分
壹拾贰元贰角贰分=>12.22
我们来看下具体实例
var c = \"零壹贰叁肆伍陆柒捌玖\".split(\"\"); // [\"零\",\"壹\",\"贰\",\"叁\",\"肆\",\"伍\",\"陆\",\"柒\",\"捌\",\"玖\"] var _c = {}; // 反向对应关系 for ( var i = 0; i < c.length; i++) { _c[c[i]] = i; }; var d = \"元***万***亿***万\"; var e = \",拾,佰,仟\".split(\",\"); function unit4(arr) { var str = \"\", i = 0; while (arr.length) { var t = arr.pop(); str = (c[t] + (t == 0 ? \"\" : e[i])) + str; i++; } str = str.replace(/[零]{2,}/g, \"零\"); str = str.replace(/^[零]/, \"\"); str = str.replace(/[零]$/, \"\"); if (str.indexOf(\"零\") == 0) { str = str.substring(1); } if (str.lastIndexOf(\"零\") == str.length - 1) { str = str.substring(0, str.length - 1); } return str; } function _formatD(a) { // 转化整数部分 var arr = a.split(\"\"), i = 0, result = \"\"; while (arr.length) { var arr1 = arr.splice(-4, 4); var dw = d.charAt(i), unit = unit4(arr1); if (dw == \'万\' && !unit) { dw = \"\"; } result = unit + dw + result; i += 4; } return result == \"元\" ? \"\" : result; } function _formatF(b){ // 转化小数部分 b = b || \"\"; switch (b.length) { case 0: return \"整\"; case 1: return c[b] + \"角\"; default: return c[b.charAt(0)] + \"角\" + c[b.charAt(1)] + \"分\"; } } function _format(n){ var a = (\"\" + n).split(\".\"), a0 = a[0], a1 = a[1]; return _formatD(a0) + _formatF(a1); } function parse4(u4){ var res = 0; while (t = /([零壹贰叁肆伍陆柒捌玖])([拾佰仟]?)/g.exec(u4)) { var n = _c[t[1]], d = { \"\" : 1, \"拾\" : 10, \"佰\" : 100, \"仟\" : 1000 }[t[2]]; res += n * d; u4 = u4.replace(t[0], \"\"); } var result = (\"0000\" + res); return result.substring(result.length - 4); } function _parseD(d) { var arr = d.replace(/[零]/g, \"\").split(/[万亿]/), rs = \"\"; for ( var i = 0; i < arr.length; i++) { rs += parse4(arr[i]); } ; return rs.replace(/^[0]+/, \"\"); }; function _parseF(f) { var res = \"\", t = f.replace(/[^零壹贰叁肆伍陆柒捌玖]+/g, \"\").split(\"\"); // 去掉单位 if (t.length) { res = \".\"; } else { return \"\"; } ; for ( var i = 0; (i < t.length && i < 2); i++) { res += _c[t[i]]; } ; return res; }; function _parse(rmb) { var a = rmb.split(\"元\"), a1 = a[1], a0 = a[0]; if (a.length == 1) { a1 = a0; a0 = \"\"; } return _parseD(a0) + _parseF(a1); }; //小写转大写 function formatRMB(num){ var n = Number(num); if(!isNaN(num)){ if(num == 0){ return \"零元整\"; }else{ return _format(n); } }else { return false; } } //大写转小写 function parseRMB(rmb) { if (/^[零壹贰叁肆伍陆柒捌玖元万亿拾佰仟角分整]{2,}$/.test(rmb)) { var result = _parse(rmb); return rmb == this.formatRMB(result) ? result : result + \"(?)\"; } else { return false; } }; /*小写转大写*/ var xcc= \"12.22\"; document.write(xcc+\"=>\"+formatRMB(xcc)+\"<br/>\"); /*大写转小写*/ var rrrr = \"壹拾贰元贰角贰分\"; document.write(rrrr+\"=>\"+parseRMB(rrrr));
再来看一个将RMB转化为大写的例子
//人民币金额转大写程序 JavaScript版 //CopyRight Bardo QI function numToCny(num){ var capUnit = [\'万\',\'亿\',\'万\',\'圆\',\'\']; var capDigit = { 2:[\'角\',\'分\',\'\'], 4:[\'仟\',\'佰\',\'拾\',\'\']}; var capNum=[\'零\',\'壹\',\'贰\',\'叁\',\'肆\',\'伍\',\'陆\',\'柒\',\'捌\',\'玖\']; if (((num.toString()).indexOf(\'.\') > 16)||(isNaN(num))) return \'\'; num = (Math.round(num*100)/100).toString(); num =((Math.pow(10,19-num.length)).toString()).substring(1)+num; var i,ret,j,nodeNum,k,subret,len,subChr,CurChr=[]; for (i=0,ret=\'\';i<5;i++,j=i*4+Math.floor(i/4)){ nodeNum=num.substring(j,j+4); for(k=0,subret=\'\',len=nodeNum.length;((k CurChr[k%2] = capNum[nodeNum.charAt(k)]+((nodeNum.charAt(k)==0)?\'\':capDigit[len][k]); if (!((CurChr[0]==CurChr[1]) && (CurChr[0]==capNum[0]))) if(!((CurChr[k%2] == capNum[0]) && (subret==\'\') && (ret==\'\'))) subret += CurChr[k%2]; } subChr = subret + ((subret==\'\')?\'\':capUnit[i]); if(!((subChr == capNum[0]) && (ret==\'\'))) ret += subChr; } ret=(ret==\'\')? capNum[0]+capUnit[3]: ret; return ret; }
本文地址:https://www.stayed.cn/item/9379
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我