JSFiddle - React, Tailwind, and code Playground

by camnpr

HTML

主要考的编程思想。<br />
编写一个小程序,实现:输入数字转化为中文读法。<br />

例:输入10001  输出 一万零一<br />
输入71035431 输入七千一百零三万五千四百三十一<br />
<fieldset>
    <legend>货币大小写转换</legend>
    小写金额:<input type="text" name="aaa" onkeyup="nst(this)" /><br />
    大写金额:<input type="text" name="bbb" id="daxie" size="80" />
</fieldset>

JavaScript

var stmp = "";
    function nst(t) {
        if (t.value == stmp) return;
        var ms = t.value.replace(/[^\d\.]/g, "").replace(/(\.\d{2}).+$/, "$1").replace(/^0+([1-9])/, "$1").replace(/^0+$/, "0");
        var txt = ms.split(".");
        while (/\d{4}(,|$)/.test(txt[0]))
            txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/, "$1,$2");
        t.value = stmp = txt[0] + (txt.length > 1 ? "." + txt[1] : "");
        document.getElementById("daxie").value = number2num1(ms - 0);
    }
    function number2num1(strg) {
        var number = Math.round(strg * 100) / 100;
        number = number.toString(10).split('.');
        var a = number[0];
        if (a.length > 12)
            return "数值超出范围!支持的最大数值为 999999999999.99";
        var e = "零壹贰叁肆伍陆柒捌玖";
        var num1 = "";
        var len = a.length - 1;
        for (var i = 0; i <= len; i++)
            num1 += e.charAt(parseInt(a.charAt(i))) + [["圆", "万", "亿"][Math.floor((len - i) / 4)], "拾", "佰", "仟"][(len - i) % 4];
        if (number.length == 2 && number[1] != "") {
            var a = number[1];
            for (var i = 0; i < a.length; i++)
                num1 += e.charAt(parseInt(a.charAt(i))) + ["角", "分"][i];
        }
        num1 = num1.replace(/零佰|零拾|零仟|零角/g, "零");
        num1 = num1.replace(/零{2,}/g, "零");
        num1 = num1.replace(/零(?=圆|万|亿)/g, "");
        num1 = num1.replace(/亿万/, "亿");
        num1 = num1.replace(/^圆零?/, "");
        if (num1 != "" && !/分$/.test(num1))
            num1 += "整";
        return num1;
    }