首页 > 编程语言 >使用JavaScript将小写金额转化为大写金额的两种常见方法

使用JavaScript将小写金额转化为大写金额的两种常见方法

时间:2022-09-22 17:02:26浏览次数:65  
标签:money JavaScript 金额 replace length let Math 小写 unit

方法一:使用正则表达式

//方法一:使用正则表达式
function dealBigMoney(money) {
    if (money === '' || money == null || money === 'undefined') {
        return;
    }

    if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(money)) {
        return "数据非法";
    }

    money = money * 1.0;
    if (money === 0) {
        return "零";
    }

    var unit = "仟佰拾亿仟佰拾万仟佰拾元角分", str = "";
    money += "00";
    var point = money.indexOf('.');
    if (point >= 0) {
        money = money.substring(0, point) + money.substr(point + 1, 2);
    }
    unit = unit.substr(unit.length - money.length);
    for (var i = 0; i < money.length; i++) {
        str += '零壹贰叁肆伍陆柒捌玖'.charAt(money.charAt(i)) + unit.charAt(i);
    }

    var result = str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
    return result;
}
View Code 方法二:常规JavaScript实现
//方法二:常规JavaScript实现
function dealBigMoney(money) {
    let fraction = ['角', '分'];
    let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
    let head = money < 0 ? '欠' : '';
    money = Math.abs(money);

    let s = '';

    for (let i = 0; i < fraction.length; i++) {
        s += (digit[Math.floor(money * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
    }

    s = s || '整';
    money = Math.floor(money);

    for (let i = 0; i < unit[0].length && money > 0; i++) {
        let p = '';
        for (let j = 0; j < unit[1].length && money > 0; j++) {
            p = digit[money % 10] + unit[1][j] + p;
            money = Math.floor(money / 10);
        }
        s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
    }

    return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}
View Code

原文:https://blog.csdn.net/weixin_41937552/article/details/119996197

标签:money,JavaScript,金额,replace,length,let,Math,小写,unit
From: https://www.cnblogs.com/daytoy105/p/16719955.html

相关文章

  • 【查漏补缺】javascript中逗号操作符的拓展用法
    1.背景:今天看Vue3文档,发现一个网格案例中有一段 reduce的写法和作用如下:arr.reduce((o,key)=>((o[key]=1),o),{})//目的==>将["name","power"]转......
  • C语言大小写转换
    #include<stdio.h>#include<string.h>intmain(){charstr[101];scanf("%s",str);inti;charc;//A-Z65-90//a-z97-122for(i=0;(c=str......
  • 人大金仓数据库设置大小写敏感
    之前做过一些人大金仓的设置,做个记录。本文中数据库安装目录:/u01/Kingbase/ES/V8/data。(操作应以实际安装路径为准)1. 人大金仓数据库应设置大小写不敏感1.1.大小写......
  • JavaScript 函数定义
    JavaScript使用关键字 function 定义函数。函数可以通过声明定义,也可以是一个表达式。函数声明:函数声明后不会立即执行,会在我们需要的时候调用到。functionmyFunct......
  • JavaScript 的“this”关键字解释和揭秘
    JavaScript的“this”关键字解释和揭秘这这个关键字是一把双刃剑——它可能是复杂错误的来源——一旦你知道它是如何工作的,它也可以让你作为开发人员的生活更轻松。这......
  • 如何使用 JavaScript 解决二进制间隙
    如何使用JavaScript解决二进制间隙在编码训练营4个月后,我决定开始做数据结构和算法问题,为我的技术面试做准备。我使用的一些网站是:可编码性黑客等级有什么比......
  • JavaScript 进阶
    JavaScriptJavaScript是一种运行在客户端的脚本语言。运行过程由js引擎来逐行解析并执行。用处:表单动态验证、网页特效、服务端开发(Node.js)、桌面程序(Electron)......
  • javascript的void
    void 关键字:该操作符指定要计算一个表达式但是不返回值。href="#"与href="javascript:void(0)"的区别# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。而jav......
  • JavaScript JSON
    JSON是用于存储和传输数据的格式。JSON通常用于服务端向网页传递数据。JSON是一种轻量级的数据交换格式。JSON语法规则数据为键/值对。数据由逗号分隔。大括......
  • [javascript] js如何获取浏览器的语言
    当想要实现多语种时,需要获取浏览器的当前语言最直接的,就是访问浏览器内置的 navigator.language 属性:varlang=navigator.language 根据你的浏览器的设置,这段代码......