我想把整数转换成小写
比如var num = "1"就把它转成 一 如果是101 就转成 一百零一请问怎么写?看了网上很多数字转大写的例子,写来写去都不对。我要求很简单 所有数字都是整数,没有小数点,就这样转换。谢谢!

解决方案 »

  1.   

    http://hi.baidu.com/gradyszl/blog/item/c3630c1a450e9e108618bfb9.html
      

  2.   

    [code=HTML]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script>
            function Chinese() {
                var num = document.getElementById("num").value;
                            if (!/^\d*(\.\d*)?$/.test(num)) throw (new Error(-1, "Number is wrong!"));            var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");            var BB = new Array("", "拾", "佰", "仟", "萬", "億", "圆", "");            var a = ("" + num).replace(/(^0*)/g, "").split("."), k = 0, re = "";            for (var i = a[0].length - 1; i >= 0; i--) {                switch (k) {                    case 0: re = BB[7] + re; break;                    case 4: if (!new RegExp("0{4}\\d{" + (a[0].length - i - 1) + "}$").test(a[0]))                            re = BB[4] + re; break;                    case 8: re = BB[5] + re; BB[7] = BB[5]; k = 0; break;                }                if (k % 4 == 2 && a[0].charAt(i) == "0" && a[0].charAt(i + 2) != "0") re = AA[0] + re;                if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re; k++;            }
                
                alert(re);        }
        </script>
    </head>
    <body>
    <input type="text" id="num"/>
    <input type="button" value="change" onclick="Chinese()">
    </body>
    </html>
    [/url]
      

  3.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title></title>
    <script language="jscript">
    function convertCurrency(currencyDigits) {
    // Constants:
    var MAXIMUM_NUMBER = 99999999999.99;
    // Predefine the radix characters and currency symbols for output:
    var CN_ZERO = "零";
    var CN_ONE = "壹";
    var CN_TWO = "贰";
    var CN_THREE = "叁";
    var CN_FOUR = "肆";
    var CN_FIVE = "伍";
    var CN_SIX = "陆";
    var CN_SEVEN = "柒";
    var CN_EIGHT = "捌";
    var CN_NINE = "玖";
    var CN_TEN = "拾";
    var CN_HUNDRED = "佰";
    var CN_THOUSAND = "仟";
    var CN_TEN_THOUSAND = "万";
    var CN_HUNDRED_MILLION = "亿";
    var CN_SYMBOL = "人民币";
    var CN_DOLLAR = "元";
    var CN_TEN_CENT = "角";
    var CN_CENT = "分";
    var CN_INTEGER = "整";// Variables:
    var integral; // Represent integral part of digit number.
    var decimal; // Represent decimal part of digit number.
    var outputCharacters; // The output result.
    var parts;
    var digits, radices, bigRadices, decimals;
    var zeroCount;
    var i, p, d;
    var quotient, modulus;// Validate input string:
    currencyDigits = currencyDigits.toString();
    if (currencyDigits == "") {
    alert("Empty input!");
    return "";
    }
    if (currencyDigits.match(/[^,.\d]/) != null) {
    alert("Invalid characters in the input string!");
    return "";
    }
    if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
    alert("Illegal format of digit number!");
    return "";
    }// Normalize the format of input digits:
    currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
    currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
    // Assert the number is not greater than the maximum number.
    if (Number(currencyDigits) > MAXIMUM_NUMBER) {
    alert("Too large a number to convert!");
    return "";
    }// Process the coversion from currency digits to characters:
    // Separate integral and decimal parts before processing coversion:
    parts = currencyDigits.split(".");
    if (parts.length > 1) {
    integral = parts[0];
    decimal = parts[1];
    // Cut down redundant decimal digits that are after the second.
    decimal = decimal.substr(0, 2);
    }
    else {
    integral = parts[0];
    decimal = "";
    }
    // Prepare the characters corresponding to the digits:
    digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
    radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
    bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
    decimals = new Array(CN_TEN_CENT, CN_CENT);
    // Start processing:
    outputCharacters = "";
    // Process integral part if it is larger than 0:
    if (Number(integral) > 0) {
    zeroCount = 0;
    for (i = 0; i < integral.length; i++) {
    p = integral.length - i - 1;
    d = integral.substr(i, 1);
    quotient = p / 4;
    modulus = p % 4;
    if (d == "0") {
    zeroCount++;
    }
    else {
    if (zeroCount > 0)
    {
    outputCharacters += digits[0];
    }
    zeroCount = 0;
    outputCharacters += digits[Number(d)] + radices[modulus];
    }
    if (modulus == 0 && zeroCount < 4) {
    outputCharacters += bigRadices[quotient];
    }
    }
    outputCharacters += CN_DOLLAR;
    }
    // Process decimal part if there is:
    if (decimal != "") {
    for (i = 0; i < decimal.length; i++) {
    d = decimal.substr(i, 1);
    if (d != "0") {
    outputCharacters += digits[Number(d)] + decimals[i];
    }
    }
    }
    // Confirm and return the final output string:
    if (outputCharacters == "") {
    outputCharacters = CN_ZERO + CN_DOLLAR;
    }
    if (decimal == "") {
    outputCharacters += CN_INTEGER;
    }
    outputCharacters = CN_SYMBOL + outputCharacters;
    return outputCharacters;
    }
    </script>
    </head>
    <body>
    <INPUT id="Digits" type="text" name="Digits" size=20>
    <INPUT id="Convert" type="button" value="Convert" name="Convert" onclick="Result.value = convertCurrency(Digits.value);">
    <INPUT id="Result" type="text" name="Result" size=60>
    </body>
    </html>
      

  4.   

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test</title>
    </head>
    <body>
        <input id="input" type="text" value="" />
        <span id="output"></span>
        <script>
         var numChineses = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
                units = ['','十','百','千'],
                steps = ['','万','亿'];
            document.getElementById('input').onchange = function(){
                var val = this.value.replace(/\D+/g, '');
                this.value = val;
                var arr = val.split('').reverse();
                var str = '';
                if(arr.length > 16){
                    alert('数值太大');
                    return;
                }
                for(var i in arr){
                    if(i%4 !== 0){
                     var num = parseInt(arr[i]),
                     unit = parseInt(arr[i]) === 0 ? '' : units[i%4];
                        str = numChineses[num] + unit + str;
                    }else{
                        var stepIndex = Math.floor(i/4);
                        stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
                        str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
                    }
                }
                str = str.replace(/(.)\1/g, '');
                document.getElementById('output').innerHTML = str;
            }
        </script>
    </body>
    </html>
      

  5.   

    上面有点小错误,纠正下<!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test</title>
    </head>
    <body>
        <input id="input" type="text" value="" />
        <span id="output"></span>
        <script>
            //var numChineses = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'],
            var numChineses = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
                units = ['','十','百','千'],
                steps = ['','万','亿'];
            document.getElementById('input').onchange = function(){
                var val = this.value.replace(/\D+/g, '');
                this.value = val;
                var arr = val.split('').reverse();
                var str = '';
                if(arr.length > 16){
                    alert('数值太大');
                    return;
                }
                for(var i in arr){
                    if(i%4 !== 0){
                     var num = parseInt(arr[i]),
                     unit = parseInt(arr[i]) === 0 ? '' : units[i%4];
                        str = numChineses[num] + unit + str;
                    }else{
                        var stepIndex = Math.floor(i/4);
                        stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
                        str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
                    }
                }
                str = str.replace(/(.)(?=\1)/g, '');
                document.getElementById('output').innerHTML = str;
            }
        </script>
    </body>
    </html>
      

  6.   

    axiheyhey:运行没有反应,咋回事?请大家不要把“圆角分” 都算进来,我不要那些,谢谢。