javaScript 实现小写转大写

这是一个JavaScript函数,用于将输入的数字字符串转换为其对应的中文大写形式。函数首先定义了数字和位值的中文对应数组,然后通过遍历输入数字的每一位进行转换。在处理过程中,考虑到零的特殊性和连续零的处理,以及万、亿等位值的插入。最终结果会更新到指定的DOM元素中。

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

<script type="text/javascript">
   var number = [ '零','壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ];
   var bit = [ '拾', '佰', '仟', '万', '亿' ];

    function chenge(obj){
        var val = obj.value.replace(/\D/g, '');
        var result = '';
        var flag = false;
        if (val.length == 1) {
            if (val == '0') {
                result = number[0];
            } else {
                var nvm = parseInt(val);
                result = number[nvm];
            }
        }else{
           var leng = val.length;
           for(var i = 0;i<leng;i++){
             //从尾部开始截取,个、十、百、千......
             var temp = val.substring(leng-i-1,leng-i);
             var nvm = parseInt(temp);
             if(nvm == 0 && i == 0){ //第一位为0,不做处理
               
             }else if(nvm == 0 && !flag){//遇见第一个0,将标记设成true
               flag = true;
               
             }else if(nvm == 0 && flag){//遇见连续的非第一个0,不做任何处理
                
             }else if(nvm != 0 && flag){//当0结束时
               flag = false;
               var c = parseInt(i/4); //计算万、亿
               if(c == 0){
                 result = number[0]+result;   //拼接零
                 result = bit[i-1]+result;   //拼接位
                 result = number[nvm]+result; //拼接数字
               }else{
                 var t = i-(c*4);  //计算是十、百、千、十万、百万、千万
                 if(t==0){
                     result = number[0]+result;   //拼接零
                     result = bit[c+2]+result;   //拼接位
                     result = number[nvm]+result; //拼接数字
                 }else{
                     result = number[0]+result;   //拼接零
                     if(result.indexOf(bit[c+2])>0){ //判断是否已经拼接位
                    
                     }else{
                        result = bit[c+2]+result;   //拼接位,万亿
                     }
                     result = bit[t-1]+result;   //拼接位,十百千
                     result = number[nvm]+result; //拼接数字
                 }
               }
               
             }else if(nvm != 0 && !flag){
               var c = parseInt(i/4); //计算万、亿
               if(c == 0){
                 if(i>0){
                  result = bit[i-1]+result;   //拼接位
                 }
                 result = number[nvm]+result; //拼接数字                
               }else{
                 var t = i-(c*4);  //计算是十、百、千、十万、百万、千万
                 if(t==0){
                     result = bit[c+2]+result;   //拼接位
                     result = number[nvm]+result; //拼接数字
                 }else{
                     result = bit[t-1]+result;   //拼接位,十百千
                     result = number[nvm]+result; //拼接数字
                 }
               }
              
             }
           }
        }
        //获取最后一位
        var lastNumber = result.substring(result.length-1,result.length);
        //如果最后一位是零,则去掉
        if(lastNumber == number[0]){
          result = result.substring(0,result.length-1);
        }
        
        //获取前两位
        var firstNumber = result.substring(0,2);
        //将首个壹拾转换成拾,方便人的阅读
        if(firstNumber == '壹拾'){
           result = result.substring(1,result.length);
        }
        
        
        document.getElementById('upper').value = result;
        document.getElementById('aaa').innerHTML = result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值