太原网站制作_太原网站建设_太原做网站_秘密武器开发者中心
历史搜索

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

游客2025-02-01 14:30:02

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

最终实现的效果图:

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

如上图所示,前面小写,后面大写,我这里使用 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(/^整$/, '零元整');  
}

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

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

标签:JavaScript

本文是由用户"游客"发布,所有内容的版权归原作者所有。没有经过书面许可,任何单位或个人不得以任何形式复制、转载、引用本网站的内容。否则将追究法律责任。

相关专题