//Money类
using System;
namespace Money { /// <summary> /// 本类实现阿拉伯数字到大写中文的转换 /// 该类没有对非法数字进行判别 /// 请调用NumToChn方法 /// 作者:menway /// </summary> public class Money { public Money() { // // TODO: Add constructor logic here // } private char 转换数字(char x) { string stringChnNames="零一二三四五六七八九"; string stringNumNames="0123456789"; return stringChnNames[stringNumNames.IndexOf(x)]; } private string 转换万以下整数(string x) { string[] stringArrayLevelNames=new string[4] {"","十","百","千"}; string ret=""; int i; for (i=x.Length-1;i>=0;i--) if (x[i]=='0') ret=转换数字(x[i])+ret; else ret=转换数字(x[i])+stringArrayLevelNames[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 转换整数(string x) { int len=x.Length; string ret,temp; if (len<=4) ret=转换万以下整数(x); else if (len<=8) { ret=转换万以下整数(x.Substring(0,len-4))+"万"; temp=转换万以下整数(x.Substring(len-4,4)); if (temp.IndexOf("千")==-1 && temp!="") ret+="零"+temp; else ret+=temp; } else { ret=转换万以下整数(x.Substring(0,len-8))+"亿"; temp=转换万以下整数(x.Substring(len-8,4)); if (temp.IndexOf("千")==-1 && temp!="") ret+="零"+temp; else ret+=temp; ret+="万"; temp=转换万以下整数(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 转换小数(string x) { string ret=""; for (int i=0;i<x.Length;i++) ret+=转换数字(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+=转换整数(x.Substring(0,x.IndexOf(".")))+"点"+转换小数(x.Substring(x.IndexOf(".")+1)); else ret+=转换整数(x); return ret; } } }
//测试工程
using System;
namespace Money { /// <summary> /// Summary description for Class1. /// </summary> class MoneyApp { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here // Money myMoney=new Money(); string x; while (true) { Console.Write("X="); x=Console.ReadLine(); if (x=="") break; Console.WriteLine("{0}={1}",x,myMoney.NumToChn(x)); } } } }

|