|          
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.Length>1)
 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.Length>1)
 ret = ret.Remove(ret.Length-1,1);
 return ret;
 }
 
 private string ToDecimal(string x)
 {
 string ret="";
 for (int i=0;i<x.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));
 }
 }
 }
 }
 |