首页 > 代码库 > 金额阿拉伯数字转换为中文大写
金额阿拉伯数字转换为中文大写
最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下。
第一种方法相对复杂
private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";
private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
1 public static String GetCnString(String MoneyString) //传入数字 2 { 3 String[] tmpString = MoneyString.Split(‘.‘); 4 String intString = MoneyString; // 默认为整数 5 String decString = ""; // 保存小数部分字串 6 String rmbCapital = ""; // 保存中文大写字串 7 int k; 8 int j; 9 int n;10 11 if (tmpString.Length > 1)12 {13 intString = tmpString[0]; // 取整数部分14 decString = tmpString[1]; // 取小数部分15 }16 decString += "00";17 decString = decString.Substring(0, 2); // 保留两位小数位18 intString += decString;19 20 try21 {22 k = intString.Length - 1;23 if (k > 0 && k < 18)24 {25 for (int i = 0; i <= k; i++)26 {27 j = (int)intString[i] - 48;28 // rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i]; // 供调试用的直接转换29 n = i + 1 >= k ? (int)intString[k] - 48 : (int)intString[i + 1] - 48; // 等效于 if( ){ }else{ }30 if (j == 0)31 {32 if (k - i == 2 || k - i == 6 || k - i == 10 || k - i == 14)33 {34 rmbCapital += cnUnit[k - i];35 }36 else37 {38 if (n != 0)39 {40 rmbCapital += cnNumber[j];41 }42 }43 }44 else45 {46 rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k - i];47 }48 }49 50 rmbCapital = rmbCapital.Replace("兆亿万", "兆");51 rmbCapital = rmbCapital.Replace("兆亿", "兆");52 rmbCapital = rmbCapital.Replace("亿万", "亿");53 rmbCapital = rmbCapital.TrimStart(‘元‘);54 rmbCapital = rmbCapital.TrimStart(‘零‘);55 56 return rmbCapital;57 }58 else59 {60 return ""; // 超出转换范围时,返回零长字串61 }62 }63 catch64 {65 return ""; // 含有非数值字符时,返回零长字串66 }67 }68
这里使用另一种方法,使用正则表达式,去匹配数字,这个看着比较简单,可以试试
1 public string DaXie(string money) 2 { 3 try 4 { 5 string s = double.Parse(money).ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); 6 string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?‘z‘0)[0A-E]*((?=[1-9])|(?‘-z‘(?=[F-L\.]|$))))|((?‘b‘[F-L])(?‘z‘0)[0A-L]*((?=[1-9])|(?‘-z‘(?=[\.]|$))))", "${b}${z}"); 7 return Regex.Replace(d, ".", delegate(Match m) { return "负圆空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万億兆京垓秭穰"[m.Value[0] - ‘-‘].ToString(); }); 8 } 9 catch (Exception ex)10 {11 ClassAppLogs.WriteLogToLocalTextstatic(ex);12 return "零";13 }14 }
以下是去查到的,觉得不错,还是有点复杂
http://www.cnblogs.com/jsping/archive/2012/07/25/2607772.html
http://blog.csdn.net/lwjnumber/article/details/7037083
金额阿拉伯数字转换为中文大写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。