专栏首页达摩兵的技术空间js实现万级数字转汉字显示

js实现万级数字转汉字显示

场景描述

完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五。

思路解析: – 零到九的汉字索引数组 – 个十百千万的计量单位 – 数字转为字符串解析,每个十进制有单独的数字表示 – 对零的处理,重复多个零只读一个,后面无数字的省略零 – 对超出万计量的重新按照千百十的计量

const toChineseNum = (num) => {
  let dtext=['','十','百','千','万']
  let len=num.toString().length
  let numArr=num.toString().split('')
  let numTxt=''
  const toT=(numIndex)=>{
    const arr=['零','一','二','三','四','五','六','七','八','九']
    return arr[numIndex]
  }
  for(let i=1;i<=len;i++){
    if(len>5&&i<(len-3)){
      if(i==(len-4)){
          numTxt+=numArr[i-1]==0?'':toT(numArr[i-1])
          numTxt+='万'
      }else{
        if((numArr[i-2]==0&&numArr[i-1]==0)||((numArr[i-1]==0)&&(numArr[len-5]==0)&&numArr[i]==0)){
          numTxt+=''
        }else{
          numTxt+=(((numArr[i-1]==0)&&(numArr[len-5]!=0))||(numArr[i]!=0&&numArr[i-1]==0))?'零':(toT(numArr[i-1])+dtext[len-i-4])
      }
    }}else{
      if((numArr[i-1]==0&&i==len)||(numArr[i]==0&&numArr[i-1]==0)){
        numTxt+=''
      }else{
        numTxt+=numArr[i-1]==0?'零':(toT(numArr[i-1])+dtext[len-i])
      }
  }}
  return numTxt
}

codepen地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js面试题系列003

    1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。 2、属性和方法被加入到 this 引用的对象中。 3、新创建的对象由 thi...

    RobinsonZhang
  • 可惜我不是“上善若水”的人

    第一次接触这个词时,我觉得这个词好高尚,也觉得自己应该去那样做。虽然在不能恩泽万物,也能否帮助下其他的人,尽自己的能力,虽然不似水是滋润生命的那般,也能在人生发...

    RobinsonZhang
  • a>b的那些事

    经常会遇到对比两个值大小关系的逻辑,常规的处理中我们都是处理两个数字或者数字类型的字符串。那么这里进行延伸拓展的练习,来避免一些开发中的采坑。

    RobinsonZhang
  • SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

    视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。

    Jetpropelledsnake21
  • 董朝:打造云存储服务——移动端数据存储与分发

    先做一个简单的自我介绍,2011年我毕业以后,一直从事IOS的开发,目前为止大概有七年的工作经验,前四年的时间主要在做APP里开发,之后三年主要做SDK相关的工...

    云加社区技术沙龙
  • 全栈虚拟机GraalVM初体验

    近日Oracle开源了一个实验性的产品GraalVM,官方称之为Universal GraalVM。它打通了不同语言之间的鸿沟,让我们可以进行混合式多语言编程。...

    老钱
  • 最佳编码实践:搞砸代码的10种方法

     这是一篇提供有效、实用编程方法的程序箴言,作者Susan Harkins是世界最大的技术期刊出版社的主编,具有多年的实践经验;在这篇文章里她重申“最佳编码实践...

    用户1289394
  • 第一章 Web MVC简介 —— 跟开涛学SpringMVC

    1、  Web浏览器(如IE)发起请求,如访问http://sishuok.com

    bear_fish
  • 产品经理被打,可能是自己太蠢了

    光看视频可能看不出打架的缘由,网上有人说出了这个视频的故事:这个事情发生在某互联网公司,产品经理与程序员之间发生的冲突。完整的过程是这样的。

    用户3596197
  • 设计模式03——Template Method模式

    模板方法(Template Method)模式就是带有模板功能的模式 ,组成模板方法的方法被定义在父类中,这些方法是抽象方法,在模板方法中规定了这些方法的执行流...

    itlemon

扫码关注云+社区

领取腾讯云代金券