首頁  >  文章  >  web前端  >  JavaScript整數金額轉漢語數字大寫

JavaScript整數金額轉漢語數字大寫

高洛峰
高洛峰原創
2016-11-25 11:19:411056瀏覽

前幾天用網銀給朋友轉賬,在金額一欄中輸入阿拉伯數字,右邊會立即顯示出相應的漢語數字大寫。感覺挺有意思,就到網路上搜尋現成程式碼(沒怎麼仔細找),找到一段 Java 的和一段 C# 的。不過感覺它們的實現都很繁瑣,或者說不夠優雅。最重要的是功能上有缺陷,例如 100 被翻譯成“壹佰零拾零”,在漢語中我們習慣說“壹佰元整”。所以,就考慮自己動手寫一個小程式。

我現在也有點思維定勢了:一提起處理文本,腦海中閃過的就是正則表達式,一想到正則表達式,就聯想到Perl,然後就是想到了正則方面和它能相媲美的 JavaScript ……

下面是我的程式碼,目前只處理正整數。

view plaincopy to clipboardprint?
function digit_uppercase(n) {   
    var digit = [   
,      var digit = [   
,        伍, 陸, 柒, 捌, 玖  
    ];   
    var unit = [   
     var unit = [   
    元, 萬, 億],   
        [, 擷取, 佰, 仟]   
    ];    ) 含&& n > 0; i++) {   
        var p = ;   
        for (var j = 0; j 0; j++) {   
    
            n = Math.floor(n / 10);   
        }   
        s = p.replace(/( $/, 零)   
          + unit[0][i] + s;   
    }   
    return s.replace(/(零.)*零元/ 元)   
             .replace(/^$/, 零元) +整;   
}  
function digit_uppercase(n) {
    var digit = [
        零捌, 玖
    ];
    var unit = [
        [元, 萬, 百萬],
        [, 擷取, 佰, 仟]
    ];
    var s = ;
&    var p = ;
        for (var j = 0; j 0; j++) {
            p = digit[n % 10] + un%    n = Math.floor (n / 10);
        }
        s = p.replace(/(零.)*零$/, )
        + unit[0][i] + s;
}
    return s.replace(/(零.)*零元/, 元)
            .replace(/(零.)+/g, 零)
            .replace(/^$/, 零元) + 整;
}

功能測試
view plaincopy to clipboardprint?
alert(digit_uppercase(0));          // 零元整   alert(digit_uppercase(123));   
alert(digit_uppercase(1000000)); // 壹佰萬元整   
alert(digit_uppercase(100000001));  // 壹億零壹元整   
alert(digit_uppercase(100000000)
alert(digit_uppercase(1000000 000007070707003030007070030307元。 234567890)); / / 壹拾貳億叁仟肆佰伍拾陸萬柒仟捌佰玖拾元整   
alert(digit_uppercase(1001100101)); // 7777777777777筆次拾取777777777777分笈。 (digit_uppercase(110101010));  // 壹億壹仟零壹拾萬壹仟零壹拾元整  
alert(digit_uppercase(0));;       // 壹佰貳拾叁元整
alert(digit_uppercase(1000000));    // 壹佰萬元整
alert(digit_uppercase(100000001)); ; //壹拾億元整
alert(digit_uppercase(1234567890)); // 壹拾貳億叁仟肆佰伍拾陸萬柒仟捌佰玖拾取 1000alert(git101case(10100001070707000100777727299900000000089999);零壹佰壹拾萬零壹佰零壹元整
alert(digit_uppercase(110101010));  // 壹億壹仟圎百厜厎藏零厜拾元弎

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn