金额大小写转换

刚开通博客也不知道写什么,看博客太空了,就把一个项目中金额大小写转换的类抽出来。废话不说上图上代码。

先看个demo

金额大小写转换

目前只能精确到 分

主要代码如下

 

  1 using System;

  2 using System.Collections.Generic;

  3 using System.Linq;

  4 using System.Web;

  5 

  6 namespace 大小写转换

  7 {

  8     public class ConvertHelper

  9     {

 10         /// <summary>

 11         /// 将小写数字转成大写金额

 12         /// </summary>

 13         /// <param name="str"></param>

 14         /// <returns></returns>

 15         public string ConvertNum(string str)

 16         {

 17             string rstr = "";

 18             if (!IsPositveDecimal(str))

 19             {

 20                 rstr = "";

 21                 str = str.Substring(1);

 22             }

 23             //return "输入的不是正数字!";

 24             if (Double.Parse(str) > 999999999999.99)

 25                 return "数字太大,无法换算,请输入一万亿元以下的金额";

 26             char[] ch = new char[1];

 27             ch[0] = '.'; //小数点

 28             string[] splitstr = null; //定义按小数点分割后的字符串数组

 29             splitstr = str.Split(ch[0]); //按小数点分割字符串

 30             if (splitstr.Length == 1) //只有整数部分

 31                 return ConvertData(str) + "圆整";

 32             else //有小数部分

 33             {

 34 

 35                 rstr += ConvertData(splitstr[0]) + "";//转换整数部分

 36                 rstr += ConvertXiaoShu(splitstr[1]); //转换小数部分

 37                 return rstr;

 38             }

 39         }

 40 

 41 

 42         ///

 43         /// 判断是否是正数字字符串

 44         ///

 45         /// 判断字符串

 46         /// 如果是数字,返回true,否则返回false

 47         public bool IsPositveDecimal(string str)

 48         {

 49             Decimal d;

 50             try

 51             {

 52                 d = Decimal.Parse(str);

 53             }

 54             catch (Exception)

 55             {

 56                 return false;

 57             }

 58             if (d >= 0)

 59                 return true;

 60             else

 61                 return false;

 62         }

 63 

 64 

 65         ///

 66         /// 转换数字(整数)

 67         ///

 68         /// 需要转换的整数数字字符串

 69         /// 转换成中文大写后的字符串

 70         public string ConvertData(string str)

 71         {

 72             string tmpstr = "";

 73             string rstr = "";

 74             int strlen = str.Length;

 75             if (strlen <= 4)//数字长度小于四位

 76             {

 77                 rstr = ConvertDigit(str);

 78 

 79             }

 80             else

 81             {

 82                 if (strlen <= 8)//数字长度大于四位,小于八位

 83                 {

 84                     tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字

 85                     rstr = ConvertDigit(tmpstr);//转换最后四位数字

 86                     tmpstr = str.Substring(0, strlen - 4);//截取其余数字

 87                     //将两次转换的数字加上万后相连接

 88                     rstr = String.Concat(ConvertDigit(tmpstr) + "", rstr);

 89                     rstr = rstr.Replace("零零", "");

 90                 }

 91                 else

 92                     if (strlen <= 12)//数字长度大于八位,小于十二位

 93                     {

 94                         tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字

 95                         rstr = ConvertDigit(tmpstr);//转换最后四位数字

 96                         tmpstr = str.Substring(strlen - 8, 4); //再截取四位数字

 97                         rstr = String.Concat(ConvertDigit(tmpstr) + "", rstr);

 98                         tmpstr = str.Substring(0, strlen - 8);

 99                         rstr = String.Concat(ConvertDigit(tmpstr) + "亿", rstr);

100                         rstr = rstr.Replace("零亿", "亿");

101                         rstr = rstr.Replace("零万", "");

102                         rstr = rstr.Replace("零零", "");

103                         rstr = rstr.Replace("零零", "");

104                     }

105             }

106             strlen = rstr.Length;

107             if (strlen >= 2)

108             {

109                 switch (rstr.Substring(strlen - 2, 2))

110                 {

111                     case "佰零": rstr = rstr.Substring(0, strlen - 2) + ""; break;

112                     case "仟零": rstr = rstr.Substring(0, strlen - 2) + ""; break;

113                     case "万零": rstr = rstr.Substring(0, strlen - 2) + ""; break;

114                     case "亿零": rstr = rstr.Substring(0, strlen - 2) + "亿"; break;

115                 }

116             }

117             return rstr;

118         }

119 

120 

121 

122         ///

123         /// 转换数字(小数部分)

124         ///

125         /// 需要转换的小数部分数字字符串

126         /// 转换成中文大写后的字符串

127         public string ConvertXiaoShu(string str)

128         {

129             int strlen = str.Length;

130             string rstr;

131             if (strlen == 1)

132             {

133                 rstr = ConvertChinese(str) + "";

134                 return rstr;

135             }

136             else

137             {

138                 string tmpstr = str.Substring(0, 1);

139                 rstr = ConvertChinese(tmpstr) + "";

140                 tmpstr = str.Substring(1, 1);

141                 rstr += ConvertChinese(tmpstr) + "";

142                 rstr = rstr.Replace("零分", "");

143                 rstr = rstr.Replace("零角", "");

144                 return rstr;

145             }

146         }

147 

148 

149         ///

150         /// 转换数字

151         ///

152         /// 转换的字符串(四位以内)

153         ///

154         public string ConvertDigit(string str)

155         {

156             int strlen = str.Length;

157             string rstr = "";

158             switch (strlen)

159             {

160                 case 1: rstr = ConvertChinese(str); break;

161                 case 2: rstr = Convert2Digit(str); break;

162                 case 3: rstr = Convert3Digit(str); break;

163                 case 4: rstr = Convert4Digit(str); break;

164             }

165             rstr = rstr.Replace("拾零", "");

166             strlen = rstr.Length;

167             return rstr;

168         }

169 

170 

171         ///

172         /// 转换四位数字

173         ///

174         public string Convert4Digit(string str)

175         {

176             string str1 = str.Substring(0, 1);

177             string str2 = str.Substring(1, 1);

178             string str3 = str.Substring(2, 1);

179             string str4 = str.Substring(3, 1);

180             string rstring = "";

181             rstring += ConvertChinese(str1) + "";

182             rstring += ConvertChinese(str2) + "";

183             rstring += ConvertChinese(str3) + "";

184             rstring += ConvertChinese(str4);

185             rstring = rstring.Replace("零仟", "");

186             rstring = rstring.Replace("零佰", "");

187             rstring = rstring.Replace("零拾", "");

188             rstring = rstring.Replace("零零", "");

189             rstring = rstring.Replace("零零", "");

190             rstring = rstring.Replace("零零", "");

191             return rstring;

192         }

193 

194         ///

195         /// 转换三位数字

196         ///

197         public string Convert3Digit(string str)

198         {

199             string str1 = str.Substring(0, 1);

200             string str2 = str.Substring(1, 1);

201             string str3 = str.Substring(2, 1);

202             string rstring = "";

203             rstring += ConvertChinese(str1) + "";

204             rstring += ConvertChinese(str2) + "";

205             rstring += ConvertChinese(str3);

206             rstring = rstring.Replace("零佰", "");

207             rstring = rstring.Replace("零拾", "");

208             rstring = rstring.Replace("零零", "");

209             rstring = rstring.Replace("零零", "");

210             return rstring;

211         }

212 

213 

214         ///

215         /// 转换二位数字

216         ///

217         public string Convert2Digit(string str)

218         {

219             string str1 = str.Substring(0, 1);

220             string str2 = str.Substring(1, 1);

221             string rstring = "";

222             rstring += ConvertChinese(str1) + "";

223             rstring += ConvertChinese(str2);

224             rstring = rstring.Replace("零拾", "");

225             rstring = rstring.Replace("零零", "");

226             return rstring;

227         }

228 

229 

230         ///

231         /// 将一位数字转换成中文大写数字

232         ///

233         public string ConvertChinese(string str)

234         {

235             //"零壹贰叁肆伍陆柒捌玖拾佰仟万亿圆整角分"

236             string cstr = "";

237             switch (str)

238             {

239                 case "0": cstr = ""; break;

240                 case "1": cstr = ""; break;

241                 case "2": cstr = ""; break;

242                 case "3": cstr = ""; break;

243                 case "4": cstr = ""; break;

244                 case "5": cstr = ""; break;

245                 case "6": cstr = ""; break;

246                 case "7": cstr = ""; break;

247                 case "8": cstr = ""; break;

248                 case "9": cstr = ""; break;

249             }

250             return (cstr);

251         }

252     }

253 

254 }

直接调用ConvertNum()方法传人金额即可。菜鸟的第一篇文章写完了!!!

 

你可能感兴趣的:(大小写)