1. 程式人生 > >阿拉伯數字轉化為中文大寫

阿拉伯數字轉化為中文大寫

var alabo = function (num) {
        if (isNaN(Number(num))) {
            return;
        };
        let tmpnewchar = '';  // 最後結果
        let numStr =  Number(num).toString().split(".")[0]; // 數字轉化字串
        if (/^-/.test(numStr)) {
            tmpnewchar = '負';
            numStr = numStr.replace(/^-/g,'');
        };
        let bigNum = ['億', '萬', '千', '百', '十']; // 定義單位陣列
        let bigNumSlice = []; // 定義被擷取後的單位陣列
        let sliceStar = numStr.length - 1; // 定義被擷取的位置
        let numAry = []; // 定義數字字串分隔成陣列

        
        let change = function (num) {
            let no = '';
            switch (num) {
                case "0":
                    no = "零"; break;
                case "1":
                    no = "一"; break;
                case "2":
                    no = "二"; break;
                case "3":
                    no = "三"; break;
                case "4":
                    no = "四"; break;
                case "5":
                    no = "五"; break;
                case "6":
                    no = "六"; break;
                case "7":
                    no = "七"; break;
                case "8":
                    no = "八"; break;
                case "9":
                    no = "九"; break;
            };
            return no;
        };
        if (sliceStar > 0) {
            numAry = numStr.replace(/0+$/g,'').split("");
            bigNumSlice = bigNum.slice(-sliceStar);
            numAry.map(function (value, index) {
                if (bigNumSlice[index] && change(value) != '零') {
                    tmpnewchar = tmpnewchar + change(value) + bigNumSlice[index]
                } else {
                    tmpnewchar = tmpnewchar + change(value)
                };
            });
            if (/零$/.test(tmpnewchar)) {
                tmpnewchar = tmpnewchar.replace(/零$/g, '');
            };
            if (/零+/.test(tmpnewchar)) {
                tmpnewchar = tmpnewchar.replace(/零+/g, '零');
            };
            if (/^一十/.test(tmpnewchar)) {
                tmpnewchar = tmpnewchar.replace(/^一十/g,'十');
            };
        } else {
            tmpnewchar = change(numStr)
        };
        return tmpnewchar;
    };