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

//Money类

using System;

namespace Money
{
///

1<summary>   
2/// 本类实现阿拉伯数字到大写中文的转换   
3/// 该类没有对非法数字进行判别   
4/// 请调用NumToChn方法   
5/// 作者:menway   
6/// </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

 1<x.length;i++) "";="" (x.indexof(".")="" (x.length="0)" (x[0]="-" (x[0].tostring()="." (x[x.length-1].tostring()="." )="" +x;="" ;="" if="" numtochn(string="" public="" ret="负" ret+="转换数字(x[i]);" ret;="" return="" string="" x="x.Remove(x.Length-1,1);" x)="" {="" }="">-1)   
 2ret+=转换整数(x.Substring(0,x.IndexOf(".")))+"点"+转换小数(x.Substring(x.IndexOf(".")+1));   
 3else   
 4ret+=转换整数(x);   
 5return ret;   
 6}   
 7}   
 8} 
 9
10//测试工程 
11
12using System; 
13
14namespace Money   
15{   
16/// <summary>   
17/// Summary description for Class1.   
18/// </summary>   
19class MoneyApp   
20{   
21/// <summary>   
22/// The main entry point for the application.   
23/// </summary>   
24[STAThread]   
25static void Main(string[] args)   
26{   
27//   
28// TODO: Add code to start application here   
29//   
30Money myMoney=new Money();   
31string x;   
32while (true)   
33{   
34Console.Write("X=");   
35x=Console.ReadLine();   
36if (x=="") break;   
37Console.WriteLine("{0}={1}",x,myMoney.NumToChn(x));   
38}   
39}   
40}   
41}</x.length;i++)>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus