之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换。之前也帖出自己的实现代码。

    但我个人认为,把大写转换为数字实际上是没有多少意义的。因为很少有把大写转为数字的,大多数都是把数字转换为大写。何况把大写转为数字并不是一件很容易的事情,因为汉语大写有很多种说法,比如说:101,它的汉语说法可以有好多种:

    (一)、百零一

    (二)、一百零一

    (三)、一百又一

    (四)、幺零幺

    因此,要实现起来其实是很难的。而且还要防止用户输入大小写不固定,一会输入“一百零一”,一会又输入“壹佰零壹”,或者是二者的杂合体。形式千变万化,何况这一个数字就可以有这么多种,还有那么多特殊的数字呢?除非用成统一标准的输入。否则是很容易出现问题的。

    但是,数字转换成大写却是很实用的,平时去银行用得比较多,只要涉及金钱的时候,基本上都要求用大写。所以,这种转换看来是符合要求,因此,我用C#代码实现了其功能,并将用户输入用“,”分隔成三个一组的形式,可以实现百万亿级别的数字转换。下面我帖出部分代码,大家指正:

 

其他输入验证我就不帖出来了,只把核心代码帖出来



1. class
2.     {

3. public string returnResult(long
4.         {

5. string
6. //主要理念是把数字字符串最终分隔为四个一组四个一组的,不足的不管。 
7. if
8.             {

9. //定义一个数组,存储整个字条串分隔后的字符串。然后两次递归调用。 
10. //调用完全后,得到总的大写字符串。 
11. string[] firstSplit = new string[2];
12.                 firstSplit[0] = numStr.Substring(0, numStr.Length - 8);
13.                 firstSplit[1] = numStr.Substring(numStr.Length - 8, 8);
14. string result1 = getString(firstSplit[0]) + "億";
15. string
16. 
17. return
18.             }
19. else
20.             {

21. return
22.             }
23.         }
24. //进行一次递归调用,得到两组四位数字的大字字串 
25. public string getString(string
26.         {

27. if
28.             {

29. string[] secondSplit = new string[2];
30.                 secondSplit[0] = str.Substring(0, str.Length - 4);
31.                 secondSplit[1] = str.Substring(str.Length - 4, 4);
32. string
33. string
34. //确定是否加“万”字 
35. if (!secondSplit[0].Equals("0000"))
36.                 {

37. "萬";
38.                 }
39. 
40. return
41.             }
42. else
43.             {

44. return
45. 
46.             }
47.         }
48. 
49. int[] value = { 1000, 100, 10 };
50. 
51. //将四位数以内的字符串返回为正确的大写称呼 比如1234 返回:一千二百三十四 
52. public string getRe(string
53.         {

54. char[] number = doWith.ToCharArray();
55. int
56. string re = "";
57. 
58. for (int
59.             {

60. switch
61.                 {

62. case '0':
63. 
64. if (re.EndsWith("零"))
65.                         {

66. "";
67.                         }
68. else
69.                         {

70. "零";
71.                         }
72. 
73. break;
74. case '1':
75. "壹";
76. break;
77. case '2':
78. "贰";
79. break;
80. case '3':
81. "叁";
82. break;
83. case '4':
84. "肆";
85. break;
86. case '5':
87. "伍";
88. break;
89. case '6':
90. "陆";
91. break;
92. case '7':
93. "柒";
94. break;
95. case '8':
96. "捌";
97. break;
98. case '9':
99. "玖";
100. break;
101.                 }
102. 
103. int index = (int)Math.Pow(10, length - i - 1);
104. if (number[i].ToString() == "0")
105.                 {

106.                     index = -1;
107.                 }
108. switch
109.                 {

110. case
111. "仟";
112. break;
113. case
114. "佰";
115. break;
116. case
117. "拾";
118. break;
119.                 }
120.             }
121. 
122. if (re.EndsWith("零"))
123.             {

124.                 re = re.Substring(0, re.Length - 1);
125.             }
126. return
127. 
128.         }
129.     }
130. 
131.


小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_java

小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_小写阿拉伯数字转大写 java_02

小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_string_03

小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_小写阿拉伯数字转大写 java_04

小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_string_05

小写阿拉伯数字转大写 java java阿拉伯数字转换为中文_语言_06