格式化金额以及数字金额转为大写金额【前端】
效果展示:
//格式化金额用于票据上面显示 function formateMoney(money) { var res = ""; var str = money + ""; var arr = str.split('.'); //'123456789123456.78'.replace(/\B(?=(?:\d{1})+\b)/g, ',') //获取整数部分 str = arr[0]; //获取到 字符串长度 var len = str.length; //总长度 9 减去 -len-2 , 剩下就是补得空格数 var count = 9 - len - 2; for (var i = 1; i < count; i++) { res += "<td></td>"; } //整数部分格式化处理 res += '<td>¥</td><td>' + str.replace(/\B(?=(?:\d{1})+\b)/g, '</td><td>') + '</td>'; if (arr.length >= 2) { //证明有小数部分 res += '<td>' + arr[1].replace(/\B(?=(?:\d{1})+\b)/g, '</td><td>') + '</td>'; } else { res += '<td>0</td><td>0</td>';//因为没有小数点,所有后面两位用空格代替 } return res; } //数字金额转为大写金额 function ToUpperMoney(n) { if (n == 0) { return ""; } if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "数据非法"; var unit = "千百拾亿千百拾万千百拾元角分", str = ""; n += "00"; var p = n.indexOf('.'); if (p >= 0) n = n.substring(0, p) + n.substr(p + 1, 2); unit = unit.substr(unit.length - n.length); for (var i = 0; i < n.length; i++) str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i); return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); }