ITPub博客

首页 > 应用开发 > IT综合 > 使用C#实现阿拉伯数字到大写中文的转换 (转)

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

原创 IT综合 作者:amyz 时间:2007-08-14 17:39:07 0 删除 编辑
使用C#实现阿拉伯数字到大写中文的转换 (转)[@more@]

//Money类

using System;

namespace Money
{
 ///


 /// 本类实现阿拉伯数字到大写中文的转换
 /// 该类没有对非法数字进行判别
 /// 请调用NumToChn方法
 /// 作者:menway
 ///

 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 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 description for Class1.
 ///

 class MoneyApp
 {
 ///
 /// The main entry point for the application.
 ///

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-956469/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7895596