【数字转换为汉字】

项目场景:

在这里插入图片描述
通常这种情况下,后端返回是数组,如果想要把数组这样显示出来,就需要把数组的索引值转换为汉字显示。如,11显示为十一,21显示为二十一


实现代码讲解

 NoToChinese(num) {
 	  //如果传递过来的值不是数据类型,则直接报错
      if (!/^\d*/.test(num)) {
        alert('Number is wrong!');
        return 'Number is wrong!';
      }
     //将需要用到的汉字存放在数组中
      var AA = new Array(
        '零',
        '一',
        '二',
        '三',
        '四',
        '五',
        '六',
        '七',
        '八',
        '九'
      );
      var BB = new Array('', '十', '百', '千', '万', '亿');
      //将数值转换为字符串并且将字符串中以0开头的字符去掉,把得到的字符串以“.”分割成字符串数组
      var a = ('' + num).replace(/(^0*)/g, '');
      //变量用来存储转换后的结果
      var re = '';
      //变量存储数值为零的情况
      var zero=''
      //把整数部分转为汉字
      for (var i =0 ; i <=a.length - 1; i++) {
         if(a.charAt(i) ==0){
        	zero=AA[0]
        }else{
        	zero=''
        }
        //如果单个字符不是零并且不是最后一个字符
        if (a.charAt(i) != 0&&i!=a.length-1) 
        re = re+zero+AA[ a.charAt(i)]+BB[a.length-1-i]
        //当是最后一个字符时,直接使用数组AA
        if(i==a.length-1){
        //如果数字是204,当数值0后只有一位数时,则需要加上零
         if(a.charAt(i-1) ==0){
        	re=re+zero+AA[a.charAt(i)]
         }else{
        	re=re+AA[a.charAt(i)]
         }
        }
        //结束循环
      }
      //如果遇到10-19需要特殊处理
      if(Math.floor(num/10)===1){
        re=re.substr(1)
      }
      return re;
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值