JavaScript的小写转大写(原创)

其实说原创也是往自己脸上贴金了,实际是根据网上搜集的一些东西改写的而已。因为工作需要的原因,在网上找了些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  }

转载于:https://www.cnblogs.com/figo/archive/2007/10/24/935655.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值