金额阿拉伯数字转换为中文大写
生活随笔
收集整理的這篇文章主要介紹了
金额阿拉伯数字转换为中文大写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
最近的做項目中需要弄一個金額是阿拉伯數字轉為中文大寫的金額,自己偷懶了,就總結一下。
第一種方法相對復雜
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 try 21 { 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 else 37 { 38 if (n != 0) 39 { 40 rmbCapital += cnNumber[j]; 41 } 42 } 43 } 44 else 45 { 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 else 59 { 60 return ""; // 超出轉換范圍時,返回零長字串 61 } 62 } 63 catch 64 { 65 return ""; // 含有非數值字符時,返回零長字串 66 } 67 } 68View 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 }正則表達式匹配
?
以下是去查到的,覺得不錯,還是有點復雜
http://www.cnblogs.com/jsping/archive/2012/07/25/2607772.html
http://blog.csdn.net/lwjnumber/article/details/7037083
?
轉載于:https://www.cnblogs.com/luoqin520/p/5938042.html
總結
以上是生活随笔為你收集整理的金额阿拉伯数字转换为中文大写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乌镇走一圈要多久
- 下一篇: 设有一数据库,包括四个表:学生表(Stu