js小写数字转大写(正则表达式)

这是一个JavaScript函数,用于将输入的小写数字转换为大写金额形式。它利用正则表达式处理数字字符串,将数字转化为大写汉字,并处理各级单位及小数点后的金额部分。

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

<script language="javascript">
 //思想:把不是自己想要的东西构造成想要的东西 为自己创造条件
 //数的读法:1 每四个为一级 2 级尾的零不需要读出 3 非零数之间不论有几个零都只读一个零
 var daxieshuzhu=new Array("零","壹","贰","参","肆","伍","陆","柒","捌","玖");
 var danwei=new Array("仟","佰","拾","");
 var dadanwei=new Array(" ","万","亿","万亿");
 var input=new Array();
 var zhuanhuan=function(){
  this.input=new Array();   //定义容器接收传入串
  this.jsq=0;    //计算器,定位万亿
  this.output=new Array();  //定义容器存放转换后的串
  this.daxiezhuanhuan=function(){
   this.strtemp="";
   for(var jwq=0;jwq<this.input.length;jwq++){ //转换大写并加上单位
    this.strtemp+=daxieshuzhu[this.input[jwq]]+danwei[jwq];
   }
   this.strtemp+=" ";
   this.re=/(零/D)+/g;
   this.strtemp=this.strtemp.replace(this.re,"零");  //把多个连接的零化成一个零
   this.re=/零$/g;
   this.strtemp=this.strtemp.replace(this.re,"");  //把级尾的零去掉
   if(this.strtemp!=""){
    this.output[this.jsq]=this.strtemp.replace(" ","")+dadanwei[this.jsq];
   }
   else{
    this.output[this.jsq]=this.strtemp.replace(" ","");
   }
   this.jsq++;
  }
  this.taifen=function(input,pb){
   this.pb=pb;
   this.input=input;
   var Ainput=new Array();
   var Atemp=new Array(0,0,0,0);
   for(var temp=this.input.length-1,temp2=3,jwq=0;temp>=0;temp--,temp2--){ //拆分数字串并构造成每4个一组,不足4个以0代替
    if(temp2<0){
     temp2=3;
    }
    Atemp[temp2]=input.substr(temp,1);
    if((temp2%4)==0){
     Ainput[jwq]=Atemp;
     jwq++;
    Atemp=new Array(0,0,0,0);
    }
    else if(temp==0){
     Ainput[jwq]=Atemp;
    }
   }
   if(this.pb==1){
    var Ainput2=new Array();
    for(var temp=1;temp<Ainput[0].length;temp++){
     Ainput2[temp-1]=Ainput[0][temp];
    }
    Ainput2[3]=0;
    Ainput=new Array(Ainput2);
    return this.zhuanhuandaxie(Ainput,this.pb);
   }
   else{
    return this.zhuanhuandaxie(Ainput,this.pb);
   }
  }
  this.zhuanhuandaxie=function(Ainput,pb){
   this.pb=pb;
   this.Ainput=Ainput;
   for(var temp=0;temp<this.Ainput.length;temp++){ //循环传入数字串并传化为大写
    this.input=Ainput[temp];
    this.daxiezhuanhuan();
   }
   return this.chongzhu(this.output,this.pb);
  }
  this.chongzhu=function(output,pb){
   this.pb=pb;
   this.output=output;
   this.Stroutput="";
   for(var temp=this.output.length-1;temp>=0;temp--){ //重新组合数据串
    this.Stroutput+=this.output[temp];
   }
   if(this.pb==1){
    return this.Stroutput.replace("仟","角").replace("佰","分").replace("拾","厘");
   }
   else{
    this.re=/^零/g;
    this.Stroutput=this.Stroutput.replace(this.re,""); //清除开头的零
    return this.Stroutput;
   }   
  }
 }
 var input=prompt("请输入一个数字串:",0); //输入
 var xiaoshu=0;
 var re=/^0+/g;
 var xiaoshu=0;
 var output="",output2="";
 input=input.replace(re,"");
 input=input.replace(",","");
 var chafen=new Array();  //定义容器存放整数跟小数位
 chafen=input.split(".");
 if(chafen.length==2){
  xiaoshu=chafen[1];
 }
 input=chafen[0];
 var myzhuanhuan=new zhuanhuan();
 output=myzhuanhuan.taifen(input,0);
 if(xiaoshu!=0){
  for(var temp=3-xiaoshu.length;temp>0;temp--){  //构造成小数位为三位不足三位以0代替
   xiaoshu+="0";
  }
  var myzhuanhuan=new zhuanhuan();
  output2=myzhuanhuan.taifen(xiaoshu,1);
 }
 if(output!="" && output2!=0){ //判断整数是否为零 //输出
  alert((output+"圆"+output2).replace(" ",""));
 }
 else{
  if(output2==0){
   alert((output+"圆").replace(" ",""));
  }
  else{
   var re=/^零/g;
   alert(output2.replace(re,""));
  }
 }
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值