岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的使用C#实现阿拉伯数字到大写中文的转换,希望大家看完后能赶快学习起来。
【 tulaoshi.com - 编程语言 】
先记下来,以备后用!
/// summary /// 金额转为大写金额 /// /summary public class MoneyConvertChinese {/// summary/// 金额转为大写金额/// /summary/// param name="LowerMoney"/param/// returns/returnspublic string MoneyToChinese(string LowerMoney){ string functionReturnValue = null; bool IsNegative = false; // 是否是负数 if (LowerMoney.Trim().Substring(0, 1) == "-") {// 是负数则先转为正数LowerMoney = LowerMoney.Trim().Remove(0, 1);IsNegative = true; } string strLower = null; string strUpart = null; string strUpper = null; int iTemp = 0; // 保留两位小数 123.489→123.49 123.4→123.4 LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString(); if (LowerMoney.IndexOf(".") 0) {if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2){ LowerMoney = LowerMoney + "0";} } else {LowerMoney = LowerMoney + ".00"; } strLower = LowerMoney; iTemp = 1; strUpper = ""; while (iTemp = strLower.Length) {switch (strLower.Substring(strLower.Length - iTemp, 1)){ case ".":strUpart = "圆";break; case "0":strUpart = "零";break; case "1":strUpart = "壹";break; case "2":strUpart = "贰";break; case "3":strUpart = "叁";break; case "4":strUpart = "肆";break; case "5":strUpart = "伍";break; case "6":strUpart = "陆";break; case "7":strUpart = "柒";break; case "8":strUpart = "捌";break; case "9":strUpart = "玖";break;}switch (iTemp){ case 1:strUpart = strUpart + "分";break; case 2:strUpart = strUpart + "角";break; case 3:strUpart = strUpart + "";break; case 4:strUpart = strUpart + "";break; case 5:strUpart = strUpart + "拾";break; case 6:strUpart = strUpart + "佰";break; case 7:strUpart = strUpart + "仟";break; case 8:strUpart = strUpart + "万";break; case 9:strUpart = strUpart + "拾";break; case 10:strUpart = strUpart + "佰";break; case 11:strUpart = strUpart + "仟";break; case 12:strUpart = strUpart + "亿";break; case 13:strUpart = strUpart + "拾";break; case 14:strUpart = strUpart + "佰";break; case 15:strUpart = strUpart + "仟";break; case 16:strUpart = strUpart + "万";break; default:strUpart = strUpart + "";break;}strUpper = strUpart + strUpper;iTemp = iTemp + 1; } strUpper = strUpper.Replace("零拾", "零"); strUpper = strUpper.Replace("零佰", "零"); strUpper = strUpper.Replace("零仟", "零"); strUpper = strUpper.Replace("零零零", "零"); strUpper = strUpper.Replace("零零", "零"); strUpper = strUpper.Replace("零角零分", "整"); strUpper = strUpper.Replace("零分", "整"); strUpper = strUpper.Replace("零角", "零"); strUpper = strUpper.Replace("零亿零万零圆", "亿圆"); strUpper = strUpper.Replace("亿零万零圆", "亿圆"); strUpper = strUpper.Replace("零亿零万", "亿"); strUpper = strUpper.Replace("零万零圆", "万圆"); strUpper = strUpper.Replace("零亿", "亿"); strUpper = strUpper.Replace("零万", "万"); strUpper = strUpper.Replace("零圆", "圆"); strUpper = strUpper.Replace("零零", "零"); // 对壹圆以下的金额的处理 if (strUpper.Substring(0, 1) == "圆") {strUpper = strUpper.Substring(1, strUpper.Length - 1); } if (strUpper.Substring(0, 1) == "零") {strUpper = strUpper.Substring(1, strUpper.Length - 1); } if (strUpper.Substring(0, 1) == "角") {strUpper = strUpper.Substring(1, strUpper.Length - 1); } if (strUpper.Substring(0, 1) == "分") {strUpper = strUpper.Substring(1, strUpper.Length - 1); } if (strUpper.Substring(0, 1) == "整") {strUpper = "零圆整"; } functionReturnValue = strUpper; if (IsNegative == true) {return "负" + functionReturnValue; } else {return functionReturnValue; }} }
测试代码:
static void Main(string[] args){ Console.Write("请输入要转成大写的数字:"); string str = Console.ReadLine(); Console.WriteLine("大写:" + new MoneyConvertChinese().MoneyToChinese(str)); Console.ReadLine();}
测试结果:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)下面是其它网友的补充:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)using System; namespace ConsoleApp { /// summary /// 本类实现阿拉伯数字到大写中文的转换 /// 该类没有对非法数字进行判别 /// 请调用NumToChn方法 /// /summary public class NumFormat { public NumFormat() { // // TODO: 在此处添加构造函数逻辑 // } // 转换数字 private char ToNum(char x) { string strChnNames="零一二三四五六七八九"; string strNumNames="0123456789"; return strChnNames[strNumNames.IndexOf(x)]; } // 转换万以下整数 private string ChangeInt(string x) { string[] strArrayLevelNames=new string[4] {"","十","百","千"}; string ret = ""; int i; for (i=x.Length-1;i=0;i--) if (x[i] == '0') ret = ToNum(x[i]) + ret; else ret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret; while ((i=ret.IndexOf("零零"))!=-1) ret=ret.Remove(i, 1); if (ret[ret.Length-1]=='零' && ret.Length1) ret=ret.Remove(ret.Length-1,1); if (ret.Length=2 && ret.Substring(0,2)=="一十") ret=ret.Remove(0,1); return ret; } // 转换整数 private string ToInt(string x) { int len = x.Length; string ret,temp; if (len=4) ret = ChangeInt(x); else if (len=8) { ret = ChangeInt(x.Substring(0,len-4)) + "万"; temp = ChangeInt(x.Substring(len-4,4)); if (temp.IndexOf("千")==-1 && temp!="") ret += "零" + temp; else ret += temp; } else { ret=ChangeInt(x.Substring(0,len-8)) + "亿"; temp=ChangeInt(x.Substring(len-8,4)); if (temp.IndexOf("千")==-1 && temp!="") ret += "零" + temp; else ret += temp; ret += "万"; temp = ChangeInt(x.Substring(len-4,4)); if (temp.IndexOf("千")==-1 && temp!="") ret += "零" + temp; else ret += temp; } int i; if ((i=ret.IndexOf("零万"))!=-1) ret = ret.Remove(i+1,1); while ((i=ret.IndexOf("零零"))!=-1) ret = ret.Remove(i,1); if (ret[ret.Length-1]=='零' && ret.Length1) ret = ret.Remove(ret.Length-1,1); return ret; } private string ToDecimal(string x) { string ret=""; for (int i=0;ix.Length;i++) ret += ToNum(x[i]); return ret; } public string NumToChn(string x) { if (x.Length==0) return ""; string ret=""; if (x[0]=='-') { ret="负"; x=x.Remove(0,1); } if (x[0].ToString()==".") x="0"+x; if (x[x.Length-1].ToString()==".") x=x.Remove(x.Length-1,1); if (x.IndexOf(".")-1) ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1)); else ret += ToInt(x); return ret; } } }
测试工程
using System; namespace ConsoleApp { class MainClass { static void Main(string[] args) { /* System.Console.WriteLine("Hello, The World!"); System.Console.WriteLine("My Love!"); ClassTest ct = new ClassTest();System.Console.WriteLine(ct.Get_Str()); */ /* // 重载运算符MyVector v1 = new MyVector(5, 12); MyVector v2 = new MyVector(4, 3); MyVector v3 = new MyVector(); v3 = v1 + v2; System.Console.WriteLine("{0}测试一下", v3.Length); */ // 转换成大写数字 NumFormat nf = new NumFormat(); string x; while (true) { Console.Write("X="); x = Console.ReadLine(); if (x == "") break; Console.WriteLine("{0}={1}", x, nf.NumToChn(x)); } } } }
来源:http://www.tulaoshi.com/n/20160219/1599290.html
看过《使用C#实现阿拉伯数字到大写中文的转换》的人还看了以下文章 更多>>