格式化金额以及数字金额转为大写金额【前端】

效果展示:

 

//格式化金额用于票据上面显示
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, "元整");
}

 

posted @ 2018-02-27 09:55  Young汨  阅读(372)  评论(0编辑  收藏  举报