/*小写转大写*/
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 QIfunction 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;((kCurChr[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;}