代码改变世界

将money转换成大写汉字

2010-10-07 15:06  calm_水手  阅读(496)  评论(0编辑  收藏  举报
代码
  1   public class Money
  2         {
  3             /// <summary>
  4             /// 要转换的数字
  5             /// </summary>
  6             private double j;
  7             /// <summary>
  8             /// 
  9             /// </summary>
 10             private string[] NumChineseCharacter = new string[] { """""""""""""""""""" };
 11 
 12             public Money(double m)
 13             {
 14                 this.j = m;
 15             }
 16 
 17             /// <summary>
 18             /// 判断输入的数字是否大于double类型
 19             /// </summary>
 20             private bool IsNumber
 21             {
 22                 get
 23                 {
 24                     if (j > double.MaxValue || j <= 0)
 25                         return false;
 26                     else
 27                         return true;
 28                 }
 29             }
 30             /// <summary>
 31             /// 数字转换成大写汉字主函数
 32             /// </summary>
 33             /// <returns>返回转换后的大写汉字</returns>
 34             public string Convert()
 35             {
 36                 string bb = "";
 37                 if (IsNumber)
 38                 {
 39                     string str = j.ToString();
 40                     string[] Num = str.Split('.');
 41                     if (Num.Length == 1)
 42                     {
 43                         bb = NumberString(Num[0]) + "元整";
 44                         bb = bb.Replace("零零""");
 45                     }
 46                     else
 47                     {
 48                         bb = NumberString(Num[0]) + "";
 49                         bb += FloatString(Num[1]);
 50                         bb = bb.Replace("零零""");
 51                     }
 52                 }
 53                 else
 54                 {
 55                     MessageBox.Show("你输入的数字格式不正确或不是数字!");
 56                 }
 57                 return bb;
 58             }
 59             /// <summary>
 60             /// 小数位转换只支持两位的小数
 61             /// </summary>
 62             /// <param name="Num">转换的小数</param>
 63             /// <returns>小数转换成汉字</returns>
 64             private string FloatString(string Num)
 65             {
 66                 string cc = "";
 67                 if (Num.Length > 2)
 68                 {
 69                     throw new FormatException("小数位数过多.");
 70                 }
 71                 else
 72                 {
 73                     string bb = ConvertString(Num);
 74                     int len = bb.IndexOf("");
 75                     if (len != 0)
 76                     {
 77                         bb = bb.Replace("""");
 78                         if (bb.Length == 1)
 79                         {
 80                             cc = bb.Substring(01+ "角整";
 81                         }
 82                         else
 83                         {
 84                             cc = bb.Substring(01+ "";
 85                             cc += bb.Substring(11+ "";
 86                         }
 87                     }
 88                     else
 89                         cc = bb + "";
 90                 }
 91                 return cc;
 92             }
 93             /// <summary>
 94             /// 判断数字位数以进行拆分转换
 95             /// </summary>
 96             /// <param name="Num">要进行拆分的数字</param>
 97             /// <returns>转换成的汉字</returns>
 98             private string NumberString(string Num)
 99             {
100                 string bb = "";
101                 if (Num.Length <= 4)
102                 {
103                     bb = Convert4(Num);
104                 }
105                 else if (Num.Length > 4 && Num.Length <= 8)
106                 {
107                     bb = Convert4(Num.Substring(0, Num.Length - 4)) + "";
108                     bb += Convert4(Num.Substring(Num.Length - 44));
109                 }
110                 else if (Num.Length > 8 && Num.Length <= 12)
111                 {
112                     bb = Convert4(Num.Substring(0, Num.Length - 8)) + "亿";
113                     if (Convert4(Num.Substring(Num.Length - 84)) == "")
114                         if (Convert4(Num.Substring(Num.Length - 44)) != "")
115                             bb += "";
116                         else
117                             bb += "";
118                     else
119                         bb += Convert4(Num.Substring(Num.Length - 84)) + "";
120                     bb += Convert4(Num.Substring(Num.Length - 44));
121                 }
122                 return bb;
123             }
124             /// <summary>
125             /// 四位数字的转换
126             /// </summary>
127             /// <param name="Num">准备转换的四位数字</param>
128             /// <returns>转换以后的汉字</returns>
129             private string Convert4(string Num)
130             {
131                 string bb = "";
132                 if (Num.Length == 1)
133                 {
134                     bb = ConvertString(Num);
135                 }
136                 else if (Num.Length == 2)
137                 {
138                     bb = ConvertString(Num);
139                     bb = Convert2(bb);
140                 }
141                 else if (Num.Length == 3)
142                 {
143                     bb = ConvertString(Num);
144                     bb = Convert3(bb);
145                 }
146                 else
147                 {
148                     bb = ConvertString(Num);
149                     string cc = "";
150                     string len = bb.Substring(04);
151                     if (len != "零零零零")
152                     {
153                         len = bb.Substring(03);
154                         if (len != "零零零")
155                         {
156                             bb = bb.Replace("零零零""");
157                             if (bb.Length == 1)
158                             {
159                                 bb = bb.Substring(01+ "";
160                             }
161                             else
162                             {
163                                 if (bb.Substring(01!= "" && bb.Substring(02!= "")
164                                     cc = bb.Substring(01+ "";
165                                 else
166                                     cc = bb.Substring(01);
167                                 bb = cc + Convert3(bb.Substring(13));
168                             }
169                         }
170                         else
171                         {
172                             bb = bb.Replace("零零零""");
173                         }
174                     }
175                     else
176                     {
177                         bb = bb.Replace("零零零零""");
178                     }
179                 }
180                 return bb;
181             }
182             /// <summary>
183             /// 将数字转换成汉字
184             /// </summary>
185             /// <param name="Num">需要转换的数字</param>
186             /// <returns>转换后的汉字</returns>
187             private string ConvertString(string Num)
188             {
189                 string bb = "";
190                 for (int i = 0; i < Num.Length; i++)
191                 {
192                     bb += NumChineseCharacter[int.Parse(Num.Substring(i, 1))];
193                 }
194                 return bb;
195             }
196             /// <summary>
197             /// 两位数字的转换
198             /// </summary>
199             /// <param name="Num">两位数字</param>
200             /// <returns>转换后的汉字</returns>
201             private string Convert2(string Num)
202             {
203                 string bb = ""string cc = "";
204                 string len = Num.Substring(01);
205                 if (len != "")
206                 {
207                     bb = Num.Replace("""");
208                     if (bb.Length == 1)
209                     {
210                         cc = bb.Substring(01+ "";
211                     }
212                     else
213                     {
214                         cc = bb.Substring(01+ "";
215                         cc += bb.Substring(11);
216                     }
217                 }
218                 else
219                     cc = Num;
220                 return cc;
221             }
222             /// <summary>
223             /// 三位数字的转换
224             /// </summary>
225             /// <param name="Num">三位数字</param>
226             /// <returns>转换后的汉字</returns>
227             private string Convert3(string Num)
228             {
229                 string bb = ""string cc = "";
230                 string len = Num.Substring(02);
231                 if (len != "零零")
232                 {
233                     bb = Num.Replace("零零""");
234                     if (bb.Length == 1)
235                     {
236                         bb = bb.Substring(01+ "";
237                     }
238                     else
239                     {
240                         if (bb.Substring(01!= "")
241                             cc = bb.Substring(01+ "";
242                         else
243                             cc = bb.Substring(01);
244                         bb = cc + Convert2(bb.Substring(12));
245                     }
246                 }
247                 else
248                 {
249                     bb = Num.Replace("零零""");
250                 }
251                 return bb;
252             }
253         }
254 
255 //调用TextBox输入显示
256  double m = Convert.ToDouble(textBox1.Text);
257  Money money = new Money(m);
258  textBox2.Text = money.Convert().ToString();