http://topic.csdn.net/t/20020517/14/730276.html

解决方案 »

  1.   

    <html>
    <body>
     <script>
    var num=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
    var arr=["","十","百","千","万","十","百","千","亿"];
    function GetValue(str){
    var result="";
    var length=str.length;
    for(var i=0;i<length;i++){
    if(str.charAt(i)!="0"){
    result+=num[str.charAt(i)*1]+arr[length-1-i];
    }else{
    result+="零";
    }
    }
    return result;
    }
    var s=GetValue("123213");
    alert(s);
    </script>
    </body>
    </html>这样很简洁,不过得出的字符串可以再处理一下,比如去掉重复的"零"
      

  2.   

    http://blog.csdn.net/xuStanly/archive/2006/09/25/1282043.aspx
      

  3.   

    //借你的问提学习消化高手们的技术,^__^<html>
    <body>
    <script>
    var num=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
    var arr=["","十","百","千","万","十","百","千","亿","十","百","千","万"];
    function tochina(str){
    var result="";
    var length=str.length;
    for(var i=0;i<length;i++){
    if(str.charAt(i)!="0"){
                                               
                            
                               result+=num[str.charAt(i)*1]+arr[length-1-i];
                           
    }else{
                          if ((i>0)&&(str.charAt(i-1)*1)==0){
      result=result;   
                                 
                              
                            }else{
                                
                                if ((length-i>8)&&((str.substring(i+1,length-9))*1==0)){ 
          result+="亿零";
                                }
                               
                                else{
                    if ((length-i>4)&&((str.substring(i+1,length-5))*1==0)){ 
            result+="万零";
                                  }else{
                                   result+="零";
                                  }  
                               }
            }
                    }
    }
    return result;
    }
    var s=tochina("1210000913");
    alert(s);
    </script>
    </body>
    </html>
      

  4.   

    谢谢大家! 我认为的最佳答案:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    <script>
    function getUppercase(number){     //最大千万位
      var intPart = parseInt(number).toString(); //整数部分
    if(intPart.length > 8){
    alert("数字长度超过限制,最大只能转换千万元位!");
    return "";
    }
    var floatPart;        //小数部分
    if(number.indexOf(".") > -1){
    floatPart = number.substr(number.indexOf(".") + 1);
     }
    else{
       floatPart = "00";
     }
     var digitalCn = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
     var unitCn = new Array("元","拾","佰","仟","万");  //元、角、分因位置固定,可直接判断,不需要计算
     var dArray = new Array(); //由小写数字组成的数组,dArray([m][n])。m=数字长度,n=2;n0=数字,n1=数字排位
     var n = intPart.length;
     for(i=0;i<intPart.length;i++){
      n--;
      dArray[i] = new Array(intPart.substr(i,1),n);
     }
     var resultStr = "";
     var mod;
     var divisor = 5;
     var tenGrand = 4; //万位
    for(i=0;i<dArray.length;i++){
    if(dArray[i][0] == 0 && dArray[i][1] != 0 && dArray[i][1] != 4){  //某位为0,且不是最后一位和万位时,不加单位
    resultStr += digitalCn[dArray[i][0]];
    }else{
    mod = dArray[i][1] % divisor
    if(dArray[i][1] >= divisor){mod += 1;}
    resultStr += digitalCn[dArray[i][0]] + unitCn[mod];
    }
     }
    // alert(resultStr);
    var re
    re = /零+万/ig;
    resultStr = resultStr.replace(re,"万零");  //万前面的N个零都替换成“万零”
    re = /零{2,}/ig;
    resultStr = resultStr.replace(re,"零");  //不是“元”前面的2个以上的零都替换成1个零
    if(floatPart != "00"){
    re = /零+元/ig;
    resultStr = resultStr.replace(re,"零");  //“元”前面N个零都替换成“元”
    resultStr += digitalCn[parseInt(floatPart.substr(0,1))] + "角";
    resultStr += digitalCn[parseInt(floatPart.substr(1,1))] + "分";
    }else{
    re = /零+元/ig;
    resultStr = resultStr.replace(re,"元");  //“元”前面N个零都替换成“元”
    resultStr += "整";
    }
    return "人民币:"+resultStr;
    }
    function change() {
    var str = document.getElementById("txt").value;
    alert(getUppercase(str));

    }
    </script> 
    </head><body>
    <input type="text" id="txt" maxlength="8"/><input type="button" value="转换"  onClick="change();"/>
    </body>
    </html>
      

  5.   

    <script language="JavaScript">
    <!--
    /*作者:梅雪香 Meixx (code by meixx 2006-2-15)
     *功能:把16位以内整数转换成大写中文
     *使用方法: num.parseCN()
     *问题:当数值大于9999,9999,9999,9990的时候显示不准确,为9999,9999,9999,9999时,提示错误.
    */
    Number.prototype.parseCN = function(){
    //参数检查
    if(/\./g.test(this.toString()) || Math.abs(this).toString().length >16 )
    throw new Error(-1,"Number.parseCN()的参数非法!");
    var strResult = this<0?"负":"";
    var str = Math.abs(this).toString();
    var numArr = new Array();
    var len = str.length;
    for(var i=0,j=len/4;i<j;i++)
    numArr.push(str.substring(len-4*(i+1),len-4*i));
    for(var i=numArr.length-1;i>=0;i--)
    strResult += (/^0{4}$/.test(numArr[i])?"":(numArr[i].read() +("万亿兆".charAt(i-1)?"万亿兆".charAt(i-1):"")));
    return strResult;
    }
    String.prototype.read = function(){
    var strRtn = "";
    var len = this.length;
    var isZeroPre = false;
    var isNonZeroAppear = false;
    for(var i=len-1;i>=0;i--){
    if(this.charAt(i) != "0"){
    var ch = "拾佰仟".charAt(len-2-i);
    strRtn = "零壹贰叁肆伍陆柒捌玖".charAt(this.charAt(i)) + (ch?ch:"") + (isZeroPre?"零":"") + strRtn;
    isNonZeroAppear = true;
    isZeroPre = false;
    }
    else{
    isZeroPre = isNonZeroAppear;
    if(i == 0 ) strRtn = "零" + strRtn;
    }
    }
    return strRtn;
    }
    var time1 = new Date();
    for(var i=14000;i<15000;i++)
    document.write(i.parseCN() + "<br>");
    var time2 = new Date();
    //alert(time2.valueOf() - time1.valueOf());
    document.write(time2.valueOf() - time1.valueOf() + "毫秒");
    //-->
    </script>以前写的,没有测出错误,不过效率不是最高的,也有长度限制.