失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 金额阿拉伯数字转换为中文大写

金额阿拉伯数字转换为中文大写

时间:2022-02-14 19:40:11

相关推荐

金额阿拉伯数字转换为中文大写

最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下。

第一种方法相对复杂

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 {27j = (int)intString[i] - 48;28// rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];// 供调试用的直接转换29n = i + 1 >= k ? (int)intString[k] - 48 : (int)intString[i + 1] - 48; // 等效于 if( ){ }else{ }30if (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}44else45{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

View Code

这里使用另一种方法,使用正则表达式,去匹配数字,这个看着比较简单,可以试试

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 }

正则表达式匹配

以下是去查到的,觉得不错,还是有点复杂

/jsping/archive//07/25/2607772.html

/lwjnumber/article/details/7037083

如果觉得《金额阿拉伯数字转换为中文大写》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。