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

起起案件

起起案件

2016-02-19 11:58

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的使用C#实现阿拉伯数字到大写中文的转换,希望大家看完后能赶快学习起来。

 先记下来,以备后用!

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
  /// 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://m.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));  }  } } } 
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
使用C#实现阿拉伯数字到大写中文的转换

excel中将阿拉伯数字转换成中文大写数字的函数方式

excel
excel中将阿拉伯数字转换成中文大写数字的函数方式

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

金额阿拉伯数字转换为中文的存储过程

SQLServer
金额阿拉伯数字转换为中文的存储过程

word中阿拉伯数字转换成大写汉字

电脑入门
word中阿拉伯数字转换成大写汉字

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个将阿拉伯数字转换成中文大写的最简单算法

电脑网络
一个将阿拉伯数字转换成中文大写的最简单算法

将阿拉伯数字转成中文字的程式

编程语言 网络编程
将阿拉伯数字转成中文字的程式

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

只恋旧梦人 - QQ情侣分组

只恋旧梦人 - QQ情侣分组

C#中using的三种用法

C#中using的三种用法
下拉加载更多内容 ↓