使用C#实现阿拉伯数字到大写中文的转换

2016-02-19 11:58 148 1 收藏

岁数大了,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

延伸阅读
//******************************************************** // 模块:数字转换为中文大写 #include "stdafx.h" static char *unit1[] = { "拾", "佰", "仟" }; static char *unit2[] = { "万", "亿" }; static char *digital[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //*******************************...
标签: 电脑入门
Excel中我们在单元格输入了阿拉伯数字之后,比如1234567890,忽然想起应该将它改成中文的大写格式,这时怎么办?删掉此内容重新一个字一个字地输入壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾?显然太麻烦了。假若并不是一个数字,而是很长的一列单元格,那我们还不麻烦死? 不过别担心,在Excel中这不是个难题,至少有以下的两种方法可供您选择: 一...
标签: 电脑入门
平时工作中输入金额时常常需要转成中文大写数字,但输入起来比较麻烦,那么是否可以将数字直接转换成中文大写呢?本教程中就为大家介绍在excel中如何将数字自动转换成中文大写数字。 第一步: 打开Excel工作表,鼠标右键单击选中需要显示中文大写数字的单元格(可以批量拉选单元格),在弹出的快捷菜单中选择设置单元格格式。 第二步: ...
标签: 生活常识
阿拉伯挤奶法的危害有哪些 阿拉伯挤奶法的危害有哪些 阿拉伯挤奶法,又称JELQ挤奶法,可能有些人会对这个概念有些陌生,该方法主要就是通过按摩的方式让男人的“那话”变得雄伟异常,动作类似于挤牛奶的动作,顾称做挤奶法。 理论上阿拉伯挤奶法适用年龄没有严格的限制,从4-40不等,有人错误的认为挤奶法是让男人再次发育,其实不是...

经验教程

28

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部