正文

使用C#实现阿拉伯数字到大写中文的转换2006-09-06 09:57:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/18330.html

分享到:

//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));  }  }  }  }

阅读(3017) | 评论(8)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册