货币数值小写转换大写

检测模块:

 1 import org.junit.Test;
 2
 3 public class IoDetection
 4 {
 5     private static int a = 0;// 如果为零表示val为数值
 6
 7     @Test
 8     public void ioDetection(String var)
 9     {
10         String[] str = new String[] { "1", "2", "3", "4", "5", "6", "7", "8",
11                 "9", ".", "0" };
12         if (null == var)
13         {
14             System.out.println("不可输入空值!");
15             System.exit(0);
16         }
17         try
18         {
19             String intVar = var.substring(0, 1);
20             // 提取用户录入正数位
21             for (int j = 1; j < var.length(); j++)
22             {
23                 if (".".equals(var.substring(j - 1,
24                         var.length() - (var.length() - j))))
25                 {
26                     break;
27                 }
28                 else
29                 {
30                     intVar += var.substring(j, j + 1);
31                 }
32             }
33
34             // System.out.println(intVar);
35
36             if (9 < intVar.length())
37             {
38                 System.out.println("用户整数部分位数最多为8位!");
39                 System.exit(0);
40             }
41
42             for (int i = 0; i < var.length(); i++)
43             {
44                 // 取var的每個字節
45                 int x = i + 1;
46                 String strVal = var.toString().substring(i, x);
47                 if (0 == a)
48                 {
49                     // 将var的每個字節与str数组对比
50                     for (int j = 0; j < str.length; j++)
51                     {
52                         a = 1;
53                         if (strVal.equals(str[j]))
54                         {
55                             a = 0;
56                             break;
57                         }
58                         else
59                         {
60                             a = 1;
61                         }
62                     }
63                 }
64                 // System.out.println(strVal + "  a=" + a);
65                 if (1 == a)
66                 {
67                     System.out.println("用户输入的字符不都为数字,无法转换");
68                     System.exit(0);
69                 }
70             }
71             Convert convert = new Convert();
72             System.out.println(convert.toConver(var));
73         }
74         catch (Exception e)
75         {
76             e.printStackTrace();
77         }
78     }
79 }

框架(数值正确性检测)

  1 import org.junit.Test;
  2
  3 public class Convert
  4 {
  5     String showVal;// 用于存储数据大写
  6     String intVal;// 用于存储整数位大写
  7     String floatVal;// 用于存储小数位大写
  8     private static String intStr;// 用于存储小数点前面的数
  9     private static String floatStr;// 用于存储小数点后面的数
 10     private static int pont;// 检测是否有小数位存在
 11     String[] varArray = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
 12             "捌", "玖" };
 13     String[] intArray = new String[] { "元", "拾", "佰", "仟", "万", "拾万", "佰万",
 14             "千万" };
 15     String[] floatArray = new String[] { "角", "分" };
 16     String integral = "整";
 17
 18     @Test
 19     public String toConver(String val)
 20     {
 21         // String val = "0.01";
 22         try
 23         {
 24             if ("0".equals(val) || "0.0".equals(val) || "0.00".equals(val)
 25                     || ".00".equals(val))
 26             {
 27                 showVal = "零元";// 需要return出去
 28                 return showVal;
 29                 // System.out.println(showVal);
 30             }
 31             else
 32             {
 33
 34                 // 检测用户输入的数值首位是否有零存在,并将val去首位零值赋给newVal。
 35                 for (int i = 0; i < val.length(); i++)
 36                 {
 37                     if ("0".equals(val.substring(0,
 38                             val.length() - (val.length() - 1))))
 39                     {
 40                         val = val.substring(1);
 41                     }
 42                     else
 43                     {
 44                         break;
 45                     }
 46                 }
 47                 String newVal = val;
 48
 49                 // 检测newVal是否有小数点存在,如果存在则pont值不等于零
 50                 for (int j = 0; j < newVal.length(); j++)
 51                 {
 52                     int i = j + 1;
 53                     if (".".equals(newVal.substring(j, i)))
 54                     {
 55                         pont = j + 1;// int类型默认值为零
 56                         break;
 57                     }
 58                 }
 59                 // 如果pont不等于零,说明存在小数位则区分整数部分和小数部分反之整数部分intStr = newVal
 60                 if (0 != pont)
 61                 {
 62                     // 如果newVal值首位为小数点则给floatStr赋值反之给intStr和floatStr赋值
 63                     if (".".equals(newVal.substring(0, 1)))
 64                     {
 65                         intStr = null;
 66                         floatStr = newVal.substring(1, newVal.length());
 67                     }
 68                     else
 69                     {
 70                         String tem = newVal.substring(pont);
 71                         if (2 != tem.length())
 72                         {
 73                             newVal += "0";
 74                         }
 75                         intStr = newVal.substring(0, pont - 1);
 76                         floatStr = newVal.substring(pont, pont + 2);
 77                     }
 78                 }
 79                 else
 80                 {
 81                     intStr = newVal;
 82                 }
 83
 84             }
 85
 86             // 大写转换
 87             // 如果只存在小数位置时
 88             if (null == floatStr)
 89             {
 90                 floatVal = integral;
 91             }
 92             else if (null != floatStr)
 93             {
 94                 if ("0".equals(floatStr) || "00".equals(floatStr))
 95                 {
 96                     floatVal = integral;
 97                 }
 98
 99                 else
100                 {
101                     if ("0".equals(floatStr.substring(0, 1))
102                             && floatStr.length() > 1)
103                     {
104                         floatVal = "零角";
105                         floatVal += varArray[Integer.parseInt(floatStr
106                                 .substring(1, 2))];
107                         floatVal += floatArray[1];
108                     }
109                     else
110                     {
111                         // 取小数位数字符并转为Int型从而获取varArray中的大写数值
112                         floatVal = varArray[Integer.parseInt(floatStr
113                                 .substring(0, 1))];
114                         // 获限floatArray中的角
115                         floatVal += floatArray[0];
116                         for (int i = 1; i < floatStr.length(); i++)
117                         {
118                             // 获得分位上的大写数值
119                             int j = i + 1;
120                             String var = floatStr.substring(i, j).toString();
121                             int endIdx = Integer.parseInt(var);
122                             floatVal += varArray[endIdx];
123                             // 获得floatArray中的分
124                             floatVal += floatArray[1];
125                         }
126
127                     }
128                 }
129             }
130
131             // 取整数部分
132             if (null != intStr)
133             {
134
135                 // 取整数位数字符并转为Int型从而获取varArray中的大写数值
136                 intVal = varArray[Integer.parseInt(intStr.substring(0, 1))];
137                 // 获限floatArray中的角
138                 intVal += intArray[(intStr.length() - 1)];
139                 if (Integer.parseInt("1") < intStr.length())
140                 {
141                     for (int i = 1; i < intStr.length(); i++)
142                     {
143                         int j = intStr.length() - (intStr.length() - (i + 1));
144                         if ("0".equals(intStr.substring(i, intStr.length()
145                                 - (intStr.length() - (i + 1)))))
146                         {
147                             intVal += "零";
148                         }
149                         else
150                         {
151                             // 取整数位数字符并转为Int型从而获取varArray中的大写数值
152                             intVal += varArray[Integer.parseInt(intStr
153                                     .substring(i, j))];
154                             // 获限floatArray中的角
155                             intVal += intArray[(intStr.length() - j)];
156                         }
157                     }
158                 }
159             }
160             // 检测intVal整数部分是否末尾为“零”,若为“零”则清除
161             String temIntVal;
162             // System.out.println(intVal);
163             if (null != intVal)
164             {
165                 for (int i = 0; i < intVal.length(); i++)
166                 {
167                     if ("零".equals(intVal.substring(intVal.length() - 1,
168                             intVal.length())))
169                     {
170                         temIntVal = intVal.substring(0, intVal.length() - 1);
171                         intVal = temIntVal;// }
172                     }
173                 }
174             }
175             if (null != intVal)
176             {
177                 if ("元".equals(intVal.substring(intVal.length() - 1,
178                         intVal.length())))
179                 {
180                 }
181                 else
182                 {
183                     intVal += "元";
184                 }
185                 // 检测是否重复出现“零”,若重复则保留一个“零”
186                 String temIntVal2 = null;
187                 for (int i = 0; i < intVal.length() - 1; i++)
188                 {
189                     String str1 = intVal.substring(i,
190                             intVal.length() - (intVal.length() - (i + 1)));
191                     int j = i + 1;
192                     String str2 = intVal.substring(j,
193                             intVal.length() - (intVal.length() - (i + 2)));
194                     if (str1.equals(str2))
195                     {
196
197                         String tep1 = intVal.substring(0, i);
198                         String tep2 = intVal.substring(j + 1);
199                         for (int x = 1; x < tep2.length(); x++)
200                         {
201                             if ("零".equals(tep2.subSequence(0, tep2.length()
202                                     - (tep2.length() - x))))
203                             {
204                                 tep2 = tep2.substring(1);
205                             }
206                         }
207                         temIntVal2 = tep1 + tep2;
208                         intVal = temIntVal2;
209                     }
210                 }
211             }
212             // 检测重复“万”保留最后一个
213             int num = 0;
214             if (null != intVal)
215             {
216                 for (int i = 0; i < intVal.length(); i++)
217                 {
218                     if ("万".equals(intVal.substring(i, intVal.length()
219                             - (intVal.length() - (i + 1)))))
220                     {
221                         num = num + 1;
222                     }
223                 }
224                 String str1 = null;
225                 String str2 = null;
226                 String str3 = intVal;
227                 if (num > 1)
228                 {
229                     for (int i = 1; i < num; i++)
230                     {
231                         for (int j = 0; j < str3.length(); j++)
232                         {
233                             if ("万".equals(str3.substring(j, str3.length()
234                                     - (str3.length() - (j + 1)))))
235                             {
236                                 str1 = str3.substring(0, j);
237                                 str2 = str3.substring(j + 1, str3.length());
238                                 str3 = str1 + str2;
239                                 break;
240                             }
241                         }
242                     }
243                 }
244                 intVal = str3;
245             }
246             // 判断intVal整数部分和floatVal小数部分,并将丰空值组合后赋给showVal
247             showVal = "货币数值大写:";
248             if (null != intVal && null != floatVal)
249             {
250                 showVal += intVal + floatVal;
251             }
252             else if (null != intVal)
253             {
254                 showVal += intVal;
255             }
256             else if (null != floatVal)
257             {
258                 showVal += floatVal;
259             }
260         }
261         catch (Exception e)
262         {
263             e.printStackTrace();
264         }
265         return showVal;
266     }
267 }

子框架(数值转换)

1 public class Test
2 {
3
4     public static void main(String[] args)
5     {
6         IoDetection ioDetection = new IoDetection();
7         ioDetection.ioDetection("25975428");
8     }
9 }

测试

时间: 2024-10-06 03:39:38

货币数值小写转换大写的相关文章

money 小写转换大写

示例代码如下: function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); //基本单位 var cnIntRadice = new Array('', '拾', '佰', '仟'); //对应整数部分扩展单位 var cnIntUnits = new Array('', '万', '亿', '兆'); //对应小数部分单位

C++中字母大写和小写转换实现的优化

C++中字母大写和小写转换实现的优化 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 在本文中所有以转换为小写为例. 从推荐复用代码的角度来看,用库函数是不错的办法: 方案一: char gc1[53] = "abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ"; void wayOne() { strlwr(gc1); } 长处是使用方便,别人看着也easy理解

传入一个字符串,已知字符串只由字母组成,将其中的大写字母转换为小写,小写转换为大写,返回转换后的字符串

传入一个字符串,已知字符串只由字母组成,将其中的大写字母转换为小写,小写转换为大写,返回转换后的字符串 如传入:@"GOODgoodSTUDY",返回@"goodGOODstudy" */ - (NSString *)upperExchangeLower:(NSString *)str { NSMutableString *str1=[[NSMutableString alloc] initWithString:str]; for (NSUInteger i=0;

JS函数实现金额小写转大写

止乎于分享! 1 ///<summery>小写金额转化大写金额</summery> 2 function AmountLtoU(amount) { 3 if (isNaN(amount) || amount >= 1000000000000) return "无效金额!"; //数值最大不超过1万亿 4 var sPrefix = amount < 0 ? "(负)" : ""; //将负号‘-’显示成汉字‘(

shell中大小写转换

有两种方式: 1.用tr 例如:UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]')   (把VARIABLE的小写转换成大写) LOWERCASE=$(echo $VARIABLE | tr '[A-Z]' '[a-z]')   (把VARIABLE的大写转换成小写) 2.用typeset typeset -u VARIABLE  (把VARIABLE的小写转换成大写) typeset -l  VARIABLE  (把VARIABLE的大写转换成小写

js实现小写转大写,js实现数字转人民币

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>小写转大写</title> <style type="text/css"> div { position:absolute;left:lin;top:lin;bottom:lin;right:lin; background-col

js金额转换大写

从tenpay找到的一段将金额小写转换成大写的js代码: 1 var DX = function (num) { 2 var strOutput = ""; 3 var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; 4 num += "00"; 5 var intPos = num.indexOf('.'); 6 if (intPos >= 0) 7 num = num.substring(0, intPos) + num.substr(intPos

vim中大小写转换

转自:http://www.cnblogs.com/fortran/archive/2010/07/25/1784513.html vim中大小写转化的命令是:gu或者gU,形象一点的解释就是小u意味着转为小写,大U意味着转为大写.接下来说明对这两个命令的限定(限定操作的行,字母,单词)等等. 1.整篇文章大写转化为小写 打开文件后,无须进入命令行模式. 键入:ggguG 解释一下:ggguG分作三段gg gu G gg=光标到文件第一个字符 gu=把选定范围全部小写 G=到文件结束 2.整篇文

[转] 金额小写变大写

1 /// <summary> 2 /// 金额小写变大写 3 /// </summary> 4 /// <param name="smallnum"></param> 5 /// <returns></returns> 6 public static string gMoney(decimal smallnum) 7 { 8 string cmoney , cnumber, cnum, cnum_end,cmon