现在的位置: 首页 > 综合 > 正文

JavaScript的小写转大写(原创)

2012年05月13日 ⁄ 综合 ⁄ 共 2758字 ⁄ 字号 评论关闭
其实说原创也是往自己脸上贴金了,实际是根据网上搜集的一些东西改写的而已。因为工作需要的原因,在网上找了些JS的小写金额转大写金额的代码,感觉都不是很理想。所以根据一段VBScript的脚本自己改写成JavaScript的脚本,并做了一小点修正。具体代码如下:
 1 function NumToBig(num) 
 2 
 3     if(isNaN(num)) 
 4     { 
 5         alert('请检查小写金额是否正确!'); 
 6         return
 7     } 
 8     else
 9     {
10         //保留两位有效数字
11        num = Math.round(num*Math.pow(10,2))/Math.pow(10,2);
12     }
13     var NumStr = String(num);
14     var NumChar = '零壹贰叁肆伍陆柒捌玖'
15     var UnitChar1 = ' 拾佰仟 拾佰仟 拾佰仟 拾佰仟'
16     var UnitChar2 = ' 万亿兆'
17     var Len; 
18     var LeftLen,LeftStr; 
19     var RightLen,RightStr; 
20     var BigStr = ''
21     Len = NumStr.length; 
22     //根据小数点分割字符串
23     if(NumStr.indexOf('.')==-1)//没有小数 
24     { 
25         LeftStr = NumStr; 
26         LeftLen = Len; 
27         RightStr = ''
28         RightLen = 0
29     } 
30     else
31     { 
32         LeftStr = (NumStr.split('.'))[0]; 
33         LeftLen = LeftStr.length; 
34         RightStr = (NumStr.split('.'))[1]; 
35         RightLen = RightStr.length; 
36     } 
37     //转换整数部分
38     for(var i=0;i<LeftLen;i++)
39     {
40         //按位取小写数字
41         var LeftTempNum = parseInt(LeftStr.substring(i,i+1));
42         //转换成大写
43         var LeftTempStr = NumChar.substring(LeftTempNum,LeftTempNum+1);
44         //数字位为零且不是一位数
45         if(TempStr=='' && LeftLen!=1)
46         {
47             //下一位数字为零或者为万(个)位
48             if(LeftStr.substring(i+1,i+2)=='0' || (LeftLen-i)%4==1)
49             {
50                 LeftTempStr = '';
51             }
52         }
53         else
54         {
55             //加上读的单位,拾佰仟之类的
56             LeftTempStr += UnitChar1.substring(LeftLen-i-1,LeftLen-i).replace(' ','');
57         }
58         //万位或个位
59         if((LeftLen-i)%4==1)
60         {
61         LeftTempStr += UnitChar2.substring(parseInt((LeftLen-i)/4),parseInt((LeftLen-i)/4)+1);
62             if(i>2)
63             {
64                 if(LeftStr.substring(i-3,i+1)=='0000')
65                 {
66                     LeftTempStr = TempStr.substring(0,LeftTempStr.length-1);
67                 }
68             }
69         }
70         BigStr += LeftTempStr.replace(' ','');
71     }
72     //处理小数部分
73     if(RightLen==0
74     { 
75         BigStr += '元整'
76     }
77     else
78     {
79         BigStr += '';
80         for(var i=0;i<RightLen;i++)
81         {
82             //按位取小写数字
83             var RightTempNum = parseInt(RightStr.substring(i,i+1));
84             //转换成大写
85             var RightTempStr = NumChar.substring(RightTempNum,RightTempNum+1);
86             if (i==0)
87             {
88                 RightTempStr+="";
89             }
90             if (i==1)
91             {
92                 RightTempStr+="";
93             }
94             BigStr += RightTempStr;
95         }
96     }
97     return BigStr;
98 }

抱歉!评论已关闭.