`
cqh520llr
  • 浏览: 479989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

人民币小写转大写

 
阅读更多
人民币小写转大写
--亮点:(1)用字符串存储大写(相当于小写是数组下标,数组存储值为小写对应大写)及位级(位级排序恰对应小写位置)
(2)先给数字*100并做round截取,免去小数点处理。
function toChRMB(objectValue)
{
  var returnValue = objectValue;
  var comma_sign = returnValue.indexOf(",");
  while(comma_sign != -1)
  {
	returnValue = returnValue.replace(",","");
	comma_sign = returnValue.indexOf(",");
  }
  if(!CheckIsFloat(returnValue)){
      alert("输入的不是数字,请重新输入!");
	  return "";
   }
  var thisValue=parseFloat(returnValue);

  if (thisValue==0 ){
		return "零元整";
  }
  if (thisValue<0 ){
	alert("输入的数字必须大于零,请重新输入!");
	  return "";
  }
  var ch_num="壹贰叁肆伍陆柒捌玖零";
  var ch_rank="分角元拾佰仟万拾佰仟亿拾佰仟万";

  thisValue=Math.round(thisValue*100);  
  //转换为字符
  thisValue=""+thisValue;

  var i_rank,i_num;
  var c_rank,c_num;
  var i_length=thisValue.length;
  var s_chinese_tmp="";
  for(i=0;i<i_length;i++){
     c_rank="";
	 c_num="";

     i_num=parseInt(thisValue.substr(i,1));
     if (i_num==0)
       i_num=10;
     c_num=ch_num.substr(i_num - 1,1); //生成大写数字,即‘壹贰叁....'

	 i_rank=parseInt(i_length - i);
     c_rank=ch_rank.substr(i_rank - 1,1); //生成大写位,即‘仟佰拾....'
     s_chinese_tmp+=c_num+c_rank;
  }

  //将零千零百等去掉
  var s_tmp;
  var s_chinese="";
  
  for(i=0;i<s_chinese_tmp.length;i=i+2){
     s_tmp=s_chinese_tmp.substr(i,2);
     if(s_tmp.substr(0,1)!='零')
       s_chinese+=s_tmp;
	 else if (s_tmp.substr(0,1)=='零' && (s_tmp.substr(1,1)!='元' && s_tmp.substr(1,1)!='万' && s_tmp.substr(1,1)!='亿'))  
	   s_chinese+=s_tmp.substr(0,1);
     else if (s_tmp.substr(0,1)=='零' && (s_tmp.substr(1,1)=='元' || s_tmp.substr(1,1)=='万' || s_tmp.substr(1,1)=='亿'))
       s_chinese+=s_tmp.substr(1,1);
  }
  //除去s_chinese中的"零零"
  while(s_chinese.indexOf("零零")>0)
  {
     var pos=s_chinese.indexOf("零零");
	 s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
  }
  
  //除去结尾的"零"
  while(s_chinese.substr(s_chinese.length-1,s_chinese.length)=='零')
  {
    s_chinese=s_chinese.substr(0,s_chinese.length-1);
  }
  //除去"零元"
  while(s_chinese.indexOf("零元")>0)
  {
    var pos=s_chinese.indexOf("零元");
	 s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
  }
  //除去"零万"
  while(s_chinese.indexOf("零万")>0)
  {
    var pos=s_chinese.indexOf("零万");
	 s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
  }
  //除去"零亿"
  while(s_chinese.indexOf("零亿")>0)
  {
    var pos=s_chinese.indexOf("零亿");
	 s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
  }
  i=s_chinese.indexOf("亿万元");
  if(i>=0)
    s_chinese=s_chinese.substr(0,i+1)+s_chinese.substr(i+2,s_chinese.length);
    
  i=s_chinese.indexOf("亿万零");
  if(i>=0)
    s_chinese=s_chinese.substr(0,i+1)+s_chinese.substr(i+2,s_chinese.length);
    
  i=s_chinese.indexOf("亿万");
  if(i>=0)
    s_chinese=s_chinese.substr(0,i+1)+"零"+s_chinese.substr(i+2,s_chinese.length);    
  //如果是整元,要在大写金额后加"整"
  if(s_chinese.substr(s_chinese.length - 1,1)=='元')           
    s_chinese=s_chinese+'整';        	
  return s_chinese;
}
更简单的方法:
1.public String toRMB(double money) {   
2.    char[] s1 = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};   
3.    char[] s4 = {'分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万'};   
4.    String str = String.valueOf(Math.round(money * 100 + 0.00001));   
5.    String result = "";   
6.  
7.    for (int i = 0; i < str.length(); i++) {   
8.        int n = str.charAt(str.length() - 1 - i) - '0';   
9.        result = s1[n] + "" + s4[i] + result;   
10.    }   
11.  
12.    result = result.replaceAll("零仟", "零");   
13.    result = result.replaceAll("零佰", "零");   
14.    result = result.replaceAll("零拾", "零");   
15.    result = result.replaceAll("零亿", "亿");   
16.    result = result.replaceAll("零万", "万");   
17.    result = result.replaceAll("零元", "元");   
18.    result = result.replaceAll("零角", "零");   
19.    result = result.replaceAll("零分", "零");   
20.  
21.    result = result.replaceAll("零零", "零");   
22.    result = result.replaceAll("零亿", "亿");   
23.    result = result.replaceAll("零零", "零");   
24.    result = result.replaceAll("零万", "万");   
25.    result = result.replaceAll("零零", "零");   
26.    result = result.replaceAll("零元", "元");   
27.    result = result.replaceAll("亿万", "亿");   
28.  
29.    result = result.replaceAll("零$", "");   
30.    result = result.replaceAll("元$", "元整");   
31.  
32.    return result;   
33.}




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics