数字 转 中文

本文介绍如何将数字转换成中文写法,包括基础版的实现,处理万位以下数字,解决多个相邻零的特殊情况,以及扩展到处理万位以上数字的方法。通过代码示例展示了转换思路和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会遇到这样的情况,需要将数字123转换成对应的中文写法 一百二十三1234转成对应的中文写法 一千二百三十四

1、基础版

下面的代码只处理到万位

基本思路

  • 将输入的数字转换为字符串,遍历
  • 将每一项数字转为对应的汉字,并添加单位
  • 解决多个相邻的零的情况,只保留一个。比如1001,应该是一千零一
  • 若最后一个数字是0,则删除最后这个数字对应的
  • 若输入的是个位数,而是是0,那么这个唯一的零,需要保留
   function toChinese(number){
       const d=["","十","百","千","万"];
       number=number+"";
       let res="";
       for(let i=0;i<number.length;i++){
           const w=number.length-i-1;
           const han=goo(number[i]);
           if(han=="零"){
              res+="零";
           }else{
             res+=han+d[w];
           }  
       }
       // 把连续的零 合并成一个,并且去掉最后一个零
       if(res.length>1){ // 排除  只输入一个数字0 的情况,
         res=res.replace(/零{1,}/,"零").replace(/零$/,"");
       }
       
       console.log(number,'-------对应的中文写法',res)
       
   }
   // 0-9 转化成0到9 ,这个完全可以用个数组代替 ,简单省事
   function goo(n){
      switch(n){
        case "0": return "零";break;
        case "1":return "一";break;
        case "2":return "二";break;
        case "3":return "三";break;
        case "4":return "四";break;
        case "5":return "五";break;
        case "6":return "六";break;
        case "7":return "七";break;
        case "8":return "八";break;
        case "9":return "9";break;
        default :return "";break;
      }
   }
   toChinese(1234);
   toChinese(1000);
   toChinese(10001);
   toChinese(10234);
   toChinese(1);
   toChinese(19);

2、函数foo的修改

完全可以将函数fooswitch case的写法,改成数组形式的。如下

   function goo(n) {
     const arr=["零","一","二","三","四","五","六","七","八","九"];
     return arr[Number(n)];
   }

3、万位以上的输入怎么处理呢

要是输入的是6位数字,甚至7位数字,这个怎么处理,仍然可以将之转换为汉字写法呢?

基本思路:

  • 将输入的数组分为两组,5位数及其以下是一个整体,5位以上的部分是另个整体
  • 处理过程和上面的是一样的,
// 判断输入数字的长度
if(length<=5){
   // 按照前面的代码,将数字转为对应的汉字
}else{
 // 
  res = toChinese(number.substr(0, number.length - 5)) + "万" + toChinese(number.substr(number.length - 5));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值