十万以下阿拉伯数字转换为汉字--腾讯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);    //"九万零一百零一"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值