上周一个面试题目-将数字转成汉字(js实现)

题目是把数字转成汉字表示, 比如 10245转成 一碗零二百四十五 (js实现)

思路:

  • 数字 => 字符串
  • 字符串对应数字 => 汉字 (特别要注意此处插入顺序跟正常正好相反, 要倒序处理)
  • 汉字中插入数值单位(万/千/百 …)
  • 对连续了零进行处理
    handleNumberToChinese = (num) =>{
      let arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
      let arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千','万'];
      var arr = num;
      let newArr = arr.toString().split('');
      console.log(newArr);
      let result = '';
      for(let i = 0 ; i < newArr.length ; i++ ){
        result = arr2[i] + result;
        let reverse = newArr.length - i -1; //倒序处理
        let arr1_index = newArr[reverse];
        result = arr1[arr1_index] + result;
      }
        result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
        result = result.replace(/零+/g, '零');
        result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
        result = result.replace(/亿万/g, '亿');
        result = result.replace(/零+$/, '');
        result = result.replace(/^一十/g, '十');
        return result;
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值