首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

十万以上阿拉伯数字转换为汉字-腾讯web前端笔试题

2012-09-14 
十万以下阿拉伯数字转换为汉字--腾讯web前端笔试题问题:实现函数readInt(Number? num) ,如输入‘123’,输出‘

十万以下阿拉伯数字转换为汉字--腾讯web前端笔试题

问题:实现函数readInt(Number? num) ,如输入‘123’,输出‘一百二十三’

?

分析:1.将原字符串切割,可以用先转换为字符串后调用split()方法,或者分别对?? 10000,1000,100,10取余取得每位数;

2.将每一位分别转换为汉字;

3.插入单位;

4.去掉多余的零;

?

function readInt(num){    var src = num.toString().split(""),units = ["十","百","千","万"],curUnits = [],tmp = [],//保存转换的汉字ret = [],i = 0,len = src.length;    for(; i<len; ++i){        tmp.push("零一二三四五六七八九".charAt(src[i]));        //用字符串的charAt()方法,将阿拉伯数字对应的汉字push进数组    }curUnits = units.splice(0,len-1).reverse();//当前需要用到的单位    function joint(len){//从十位数向高位拼接汉字与单位        if(len>0){            ret.push(tmp[len-1]);            if(len>1){//确保最高位之前没有单位                ret.push(curUnits[len-1-1]);//curUints.length = len-1;            }            --len;            arguments.callee(len);//递归        }        return ret;//ret = ["零","十","三","百","零","千","二","万","一"];    }    return joint(len).reverse().join("").replace(/零+[千,百,十]/g,"零").replace(/零{1,3}/g,"零").replace(/零+$/g,"");    //反转ret后,调用join()方法转化为字符串,去掉多余的零}var a = 12030,b = 80000,c = 90101;readInt(a); //"一万二千零三十"readInt(b);    //"八万"readInt(c);    //"九万零一百零一"

热点排行