js实现小写金额转换为大写金额的方法

在一些支付或者银行确认信息中经常需要将小写金额转换为大写金额的需求,这里做一下常见的两种实现方法。

最终实现的效果图:

js 实现小写金额转化为大写金额的方法

如上图所示,前面小写,后面大写,我这里使用 vue 测试,其它框架同理。小写是传值的字段money,大写直接调用函数dealBigMoney(money) 即可。

方法一:使用正则表达式

dealBigMoney(n) {       
   if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
   return "数据非法";
   let unit = "千百拾亿千百拾万千百拾元角分", str = "";
   n += "00";
   let 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, "元整");
   }

模板调用:

<el-col>{{money}}|{{dealBigMoney(money) }}</el-col>

方法二:常规 JavaScript 实现

/** 数字金额大写转换(可以处理整数,小数,负数) */  
dealBigMoney(n)   
{  
    var fraction = ['角', '分'];  
    var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];  
    var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟']  ];  
    var head = n < 0? '欠': '';  
    n = Math.abs(n);  
 
    var s = '';  
 
    for (var i = 0; i < fraction.length; i++)   
    {  
        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');  
    }  
    s = s || '整';  
    n = Math.floor(n);  
 
    for (var i = 0; i < unit[0].length && n > 0; i++)   
    {  
        var p = '';  
        for (var j = 0; j < unit[1].length && n > 0; j++)   
        {  
            p = digit[n % 10] + unit[1][j] + p;  
            n = Math.floor(n / 10);  
        }  
        s = p.replace(/(零.)*零$/, '').replace(/^$/, '零')  + unit[0][i] + s;  
    }  
    return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');  
}

这种也是一样的,这种工具类还是比较好用的。

这些方法我在实际开发中已经实操过,大家直接复制就可以使用,如果你有更好的方法,欢迎下方留言!

「点点赞赏,手留余香」

3

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » js实现小写金额转换为大写金额的方法

发表回复