如把 七十四=>74  一百三十六=>136

解决方案 »

  1.   

    自己设计算法了
    先要获取一个完整的大写数字str
    先从左边判断起
    看你判断的范围了
    比如从万
    那么就先判断是否有“万”
    然后获取左边的数字转换成阿拉伯数字
    比如“八万四千二十”获取了“八万”转换成了80000
    然后继续获取万右边的
    从千获取同样方法转换成4000
    继续获取百,没有
    继续获取十,转换成20
    然后把所有的相加就成了84020应该是一种递归算法
    具体的楼主自己写
      

  2.   

    没怎么测试<script language="JavaScript">
    <!--
    function cn2alb(str){
    var cnunit = new Array('个','十','百','千','万','亿');
    var albunit = new Array(1,10,100,1000,10000,100000000);
    var cn = new Array('零','一','二','三','四','五','六','七','八','九','十');
    var alb = new Array(0,1,2,3,4,5,6,7,8,9,10); var rs = 0;
    for(var i = 0; i < str.length; i ++){
    var tmp = 0;
    var _cn = inarray(str.charAt(i), cn)
    if(_cn != -1){
    tmp = alb[_cn];
    i ++;
    }
    var _cnunit =inarray(str.charAt(i), cnunit)
    if(_cnunit != -1){
    tmp *= albunit[_cnunit];
    }else{
    var _cn = inarray(str.charAt(i), cn)
    if(_cn != -1){
    tmp += alb[_cn];
    }
    }
    rs += tmp;
    }
    alert(rs);
    }
    function inarray(v, arr){
    for(var i = 0; i < arr.length; i ++){
    if(v == arr[i])return i;
    }
    return -1;
    }cn2alb('七十四');
    cn2alb('一百三十六');
    cn2alb('十四');
    //-->
    </script>
      

  3.   

    用json存入相应的对应关系也可以,比上面的代码要少一些,或者用map   key-value
      

  4.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
     <head>
      <title> New Document </title>
     </head> <body>
      <script type="text/javascript">
        String.prototype.convertToNumber=function(){
    var numbers = {"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9};
    var multiple = {"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
    var result = 0;
    for(var i=0;i<this.length;i++){
    if(numbers[this.charAt(i)]){
    var temp = numbers[this.charAt(i)];
    for(var j=i+1;j<this.length;j++){
    if(!multiple[this.charAt(j)]){
    break;
    }
    temp *= multiple[this.charAt(j)];
    }
    result += temp;
    }
    }
    return result;
    } alert("一百七十四".convertToNumber());
      </script>
     </body>
    </html>
      

  5.   


    知道Array不能有key,,,没想到有 map key-value
      

  6.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
     <head>
      <title> New Document </title>
     </head> <body>
      <script type="text/javascript">
        String.prototype.convertToNumber=function(){
            var numbers = {"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10};
            var multiple = {"个":1,"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
            var result = 0;
            for(var i=0;i<this.length;i++){
    var temp = 0;
                if(numbers[this.charAt(i)]){
                    temp = numbers[this.charAt(i)];
                    i ++;
                }
    if(i == this.length)return result + temp;            if(multiple[this.charAt(i)]){
     temp *= multiple[this.charAt(i)];
                 }else{
    i --;
     }
                 
                 result += temp;
            }
            return result;
        }    alert("一百七十四".convertToNumber());
    alert("十四".convertToNumber());//楼上的这里有错
      </script>
     </body>
    </html>
      

  7.   

    <script language="JavaScript">
    <!--
    function cn2alb(str){
        var cnunit = new Array('十','百','千','万','亿');
        var albunit = new Array(10,100,1000,10000,100000000);
        var cn = new Array('零','一','二','三','四','五','六','七','八','九');
        var alb = new Array(0,1,2,3,4,5,6,7,8,9);    var rs = 0;
    var ui = -1;
        for(var i = 0; i < str.length; i ++){
            var tmp = 0;        var _cn = inarray(str.charAt(i), cn)
            if(_cn != -1){
                tmp += alb[_cn];
    i ++;
            }        var _cnunit =inarray(str.charAt(i), cnunit)
    var _flag = false;
            if(_cnunit != -1){
    if(_cnunit > ui){
    if(ui != -1)_flag = true;
    ui = _cnunit;
    }
    if(_flag){
    rs += tmp;
    rs *= albunit[_cnunit];
    }else{
    if(tmp == 0)tmp = 1;
    tmp *= albunit[_cnunit];
    }
            }else{
                i --;
            }
            if(!_flag)rs += tmp;
        }
        alert(rs);///////////////////
    }
    function inarray(v, arr){
        for(var i = 0; i < arr.length; i ++){
            if(v == arr[i])return i;
        }
        return -1;
    }cn2alb('十');
    cn2alb('十八');
    cn2alb('一百一十八');
    cn2alb('一百三十六');
    cn2alb('十八万');
    cn2alb('一百一十八万零一');
    cn2alb('一百万零一十八');
    //-->
    </script>
      

  8.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
     <head>
      <title> New Document </title>
     </head> <body>
      <script type="text/javascript">
        String.prototype.convertToNumber=function(){
            var numbers = {"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9};
            var multiple = {"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
            var result = 0;
            var l = 1;//十、百、千单位
            var k = 1;//万单位
            var j = 1;//亿单位
            for(var i=this.length-1;i>=0;i--){
             if(numbers[this.charAt(i)]){
                    result += l*numbers[this.charAt(i)];
                    l = 1;
                }else if(multiple[this.charAt(i)]){
                 if(l==10){//特殊处理十
             result += l;
            }
            if(multiple[this.charAt(i)]==100000000){
    k = 1;
    }
            l = k*j*multiple[this.charAt(i)];
                 if(multiple[this.charAt(i)]==10000){
                 k = k*multiple[this.charAt(i)];
                 }else if(multiple[this.charAt(i)]==100000000){
                 j = j*multiple[this.charAt(i)];
                 }
             }
            }
            if(l!=1){
             result += l;
            }
            return result;
        }    alert("十四".convertToNumber());
      </script>
     </body>
    </html>
      

  9.   

    js的数组功能难道比java来的更强大?