1     public class MyExamFormat : IFormatProvider, ICustomFormatter
 2         {
 3             public string NumberToChinese(int num)
 4             {
 5                 string numStr = "0123456789";
 6                 string chineseStr = "零一二三四五六七八九";
 7                 if (num >= 0 && num <= 9) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString(); }
 8                 else if (num >= 10 && num <= 19) { if (num == 10) { return ""; } return "" + chineseStr[numStr.IndexOf(num.ToString()[1])].ToString(); }
 9                 else if (num >= 20 && num <= 99)
10                 {
11                     if (num % 10 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
12                     else return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" + chineseStr[numStr.IndexOf(num.ToString()[1])].ToString();
13                 }
14                 else if (num >= 100 && num <= 999)
15                 {
16                     if (num % 100 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
17                     else return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" +
18                       ((int.Parse(num.ToString().Substring(1).ToString()).ToString().Length != (num.ToString().Length - 1)) ?
19                          "" + NumberToChinese(int.Parse(num.ToString().Substring(1)))
20                         : NumberToChinese(int.Parse(num.ToString().Substring(1))));
21                 }
22                 else if (num >= 1000 && num <= 9999)
23                 {
24                     if (num % 1000 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
25                     else return
26                          chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" +
27                       ((int.Parse(num.ToString().Substring(1).ToString()).ToString().Length != (num.ToString().Length - 1)) ?
28                          "" + NumberToChinese(int.Parse(num.ToString().Substring(1)))
29                         : NumberToChinese(int.Parse(num.ToString().Substring(1))));
30                 }
31                 return num.ToString();
32             }
33 
34             public object GetFormat(Type formatType)
35             {
36                 if (formatType == typeof(ICustomFormatter))
37                 {
38                     return this;
39                 }
40                 else return null;
41             }
42 
43             public string Format(string format, object arg, IFormatProvider formatProvider)
44             {
45                 return "" + NumberToChinese(int.Parse(arg + "")) + "";
46             }
47         }

 

posted on 2020-07-09 10:37  BarneyX  阅读(1242)  评论(0编辑  收藏  举报