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

2016-02-19 11:58 145 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();}

测试结果:

下面是其它网友的补充:

(本文来源于图老师网站,更多请访问https://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;  } } }

测试工程

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
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));  }  } } } 

来源:https://www.tulaoshi.com/n/20160219/1599290.html

延伸阅读
//******************************************************** // 模块:数字转换为中文大写 #include "stdafx.h" static char *unit1[] = { "拾", "佰", "仟" }; static char *unit2[] = { "万", "亿" }; static char *digital[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //*******************************...
标签: 电脑入门
Excel中我们在单元格输入了阿拉伯数字之后,比如1234567890,忽然想起应该将它改成中文的大写格式,这时怎么办?删掉此内容重新一个字一个字地输入壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾?显然太麻烦了。假若并不是一个数字,而是很长的一列单元格,那我们还不麻烦死? 不过别担心,在Excel中这不是个难题,至少有以下的两种方法可供您选择: 一...
标签: 口味食谱
阿拉伯饼 准备所有用料 按顺序将材料倒入面包机中,选择“发酵面团”,约一个半小时后,你再回来。<br>倒料的顺序为:水--糖--盐--油--面粉--酵母 分成均匀的小剂子,大点小点无所谓,...
标签: 电脑入门
平时工作中输入金额时常常需要转成中文大写数字,但输入起来比较麻烦,那么是否可以将数字直接转换成中文大写呢?本教程中就为大家介绍在excel中如何将数字自动转换成中文大写数字。 第一步: 打开Excel工作表,鼠标右键单击选中需要显示中文大写数字的单元格(可以批量拉选单元格),在弹出的快捷菜单中选择设置单元格格式。 第二步: ...
阿拉伯棒 1. 先把黄油软化~和鸡蛋~糖粉一起搅拌均匀 2. 加入面粉和成团~用擀面杖擀成厚0.8cm的饼 3. 切成长条~拧成图片上的形状~放入烤盘~ 4. 表...

经验教程

738

收藏

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