//转换小写的日期字串至大写字串
public string[] DateInCapitalCN(string NumbericDate)
{
string[] capstr= new string [] {"","",""};
string xdate=NumbericDate;
for (int i=0;i<=3;i++)
{
capstr[0]=capstr[0]+DigitToCapitalCN(xdate.Substring(i,1),"");
};
switch (xdate.Substring(4,2))
{
case "01":
capstr[1]="零壹";
break;
case "02":
capstr[1]="零贰";
break;
case "10":
capstr[1]="零壹拾";
break;
case "11":
capstr[1]="壹拾壹";
break;
case "12":
capstr[1]="壹拾贰";
break;
default:
capstr[1]=DigitToCapitalCN(xdate.Substring(5,1),"");
break;
}
switch (xdate.Substring(6,2))
{
case "10": case "20": case "30":
capstr[2]="零"+DigitToCapitalCN(xdate.Substring(6,1),"拾");
break;
default:
capstr[2]=DigitToCapitalCN(xdate.Substring(6,1),"拾")+DigitToCapitalCN(xdate.Substring(7,1),"");
break;
}
return capstr;
}
//转换小写的金额至大写
public string AmountInCapitalCN(decimal amount,params string [] currency)
{
string capstr,capstr1="",capstr2="",x1,x2,x3,x4,x5;
if (amount == 0) return "";
x1=amount.ToString("0.00");
x2=x1.Substring(0,x1.Length-3);
x3=x1.Substring(x1.Length-2);
if (x3=="00") capstr2="整";
else
{
capstr2=DigitToCapitalCN(x3.Substring(1,1),"分");
if (capstr2=="零") capstr2="整";
capstr2=DigitToCapitalCN(x3.Substring(0,1),"角")+capstr2;
}
for (int i=0;i<x2.Length;i++)
{
switch (i)
{
case 0:
x5="";
break;
case 1:
x5="拾";
break;
case 2:
x5="佰";
break;
case 3:
x5="仟";
break;
case 4:
x5="万";
break;
case 5:
if (capstr1.IndexOf("万")==-1) x5="拾万"; else x5="拾";
break;
case 6:
if (capstr1.IndexOf("万")==-1) x5="佰万"; else x5="佰";
break;
case 7:
if (capstr1.IndexOf("万")==-1) x5="仟万"; else x5="仟";
break;
case 8:
x5="亿";
break;
case 9:
if (capstr1.IndexOf("亿")==-1) x5="拾亿"; else x5="拾";
break;
case 10:
if (capstr1.IndexOf("亿")==-1) x5="佰亿"; else x5="佰";
break;
case 11:
if (capstr1.IndexOf("亿")==-1) x5="仟亿"; else x5="仟";
break;
case 12:
if (capstr1.IndexOf("亿")==-1) x5="万亿"; else x5="万";
break;
default:
x5="有没有搞错?这么大的金额啊?换系统啦!";
break;
}
capstr1=DigitToCapitalCN(x2.Substring(x2.Length-1-i,1),x5)+capstr1;
}
if ((capstr1.Substring(capstr1.Length-1,1)=="零")&(capstr2!="整")) x4="元零"; else x4="元";
capstr1=RemoveDupeZero(capstr1);
if (capstr1=="") x4="";
capstr=capstr1+x4+capstr2;
capstr=RemoveDupeZero(capstr);
if (currency.Length>0) x5=currency[0].Trim(); else x5="";
switch (x5)
{
case "CNY":
x5="人民币";
break;
case "USD":
x5="美元";
break;
case "EUR":
x5="欧元";
break;
case "JPY":
x5="日元";
break;
default:
x5="";
break;
}
return x5+capstr;
} private string DigitToCapitalCN(string digit,string cur)
{
string capdig;
switch (digit)
{
case "0":
capdig="零";
break;
case "1":
capdig="壹"+cur;
break;
case "2":
capdig="贰"+cur;
break;
case "3":
capdig="叁"+cur;
break;
case "4":
capdig="肆"+cur;
break;
case "5":
capdig="伍"+cur;
break;
case "6":
capdig="陆"+cur;
break;
case "7":
capdig="柒"+cur;
break;
case "8":
capdig="捌"+cur;
break;
case "9":
capdig="玖"+cur;
break;
default:
capdig="你个大头!";
break;
};
return capdig;
}
private string RemoveDupeZero(string source)
{
string result="";
bool flag=false;
foreach (char c in source)
{
if (c!='零')
{
result+=c;
flag=true;
}
else
{
if (flag)
{
result+='零';
flag=false;
}
}
}
return result.Trim('零');
}
}
public string[] DateInCapitalCN(string NumbericDate)
{
string[] capstr= new string [] {"","",""};
string xdate=NumbericDate;
for (int i=0;i<=3;i++)
{
capstr[0]=capstr[0]+DigitToCapitalCN(xdate.Substring(i,1),"");
};
switch (xdate.Substring(4,2))
{
case "01":
capstr[1]="零壹";
break;
case "02":
capstr[1]="零贰";
break;
case "10":
capstr[1]="零壹拾";
break;
case "11":
capstr[1]="壹拾壹";
break;
case "12":
capstr[1]="壹拾贰";
break;
default:
capstr[1]=DigitToCapitalCN(xdate.Substring(5,1),"");
break;
}
switch (xdate.Substring(6,2))
{
case "10": case "20": case "30":
capstr[2]="零"+DigitToCapitalCN(xdate.Substring(6,1),"拾");
break;
default:
capstr[2]=DigitToCapitalCN(xdate.Substring(6,1),"拾")+DigitToCapitalCN(xdate.Substring(7,1),"");
break;
}
return capstr;
}
//转换小写的金额至大写
public string AmountInCapitalCN(decimal amount,params string [] currency)
{
string capstr,capstr1="",capstr2="",x1,x2,x3,x4,x5;
if (amount == 0) return "";
x1=amount.ToString("0.00");
x2=x1.Substring(0,x1.Length-3);
x3=x1.Substring(x1.Length-2);
if (x3=="00") capstr2="整";
else
{
capstr2=DigitToCapitalCN(x3.Substring(1,1),"分");
if (capstr2=="零") capstr2="整";
capstr2=DigitToCapitalCN(x3.Substring(0,1),"角")+capstr2;
}
for (int i=0;i<x2.Length;i++)
{
switch (i)
{
case 0:
x5="";
break;
case 1:
x5="拾";
break;
case 2:
x5="佰";
break;
case 3:
x5="仟";
break;
case 4:
x5="万";
break;
case 5:
if (capstr1.IndexOf("万")==-1) x5="拾万"; else x5="拾";
break;
case 6:
if (capstr1.IndexOf("万")==-1) x5="佰万"; else x5="佰";
break;
case 7:
if (capstr1.IndexOf("万")==-1) x5="仟万"; else x5="仟";
break;
case 8:
x5="亿";
break;
case 9:
if (capstr1.IndexOf("亿")==-1) x5="拾亿"; else x5="拾";
break;
case 10:
if (capstr1.IndexOf("亿")==-1) x5="佰亿"; else x5="佰";
break;
case 11:
if (capstr1.IndexOf("亿")==-1) x5="仟亿"; else x5="仟";
break;
case 12:
if (capstr1.IndexOf("亿")==-1) x5="万亿"; else x5="万";
break;
default:
x5="有没有搞错?这么大的金额啊?换系统啦!";
break;
}
capstr1=DigitToCapitalCN(x2.Substring(x2.Length-1-i,1),x5)+capstr1;
}
if ((capstr1.Substring(capstr1.Length-1,1)=="零")&(capstr2!="整")) x4="元零"; else x4="元";
capstr1=RemoveDupeZero(capstr1);
if (capstr1=="") x4="";
capstr=capstr1+x4+capstr2;
capstr=RemoveDupeZero(capstr);
if (currency.Length>0) x5=currency[0].Trim(); else x5="";
switch (x5)
{
case "CNY":
x5="人民币";
break;
case "USD":
x5="美元";
break;
case "EUR":
x5="欧元";
break;
case "JPY":
x5="日元";
break;
default:
x5="";
break;
}
return x5+capstr;
} private string DigitToCapitalCN(string digit,string cur)
{
string capdig;
switch (digit)
{
case "0":
capdig="零";
break;
case "1":
capdig="壹"+cur;
break;
case "2":
capdig="贰"+cur;
break;
case "3":
capdig="叁"+cur;
break;
case "4":
capdig="肆"+cur;
break;
case "5":
capdig="伍"+cur;
break;
case "6":
capdig="陆"+cur;
break;
case "7":
capdig="柒"+cur;
break;
case "8":
capdig="捌"+cur;
break;
case "9":
capdig="玖"+cur;
break;
default:
capdig="你个大头!";
break;
};
return capdig;
}
private string RemoveDupeZero(string source)
{
string result="";
bool flag=false;
foreach (char c in source)
{
if (c!='零')
{
result+=c;
flag=true;
}
else
{
if (flag)
{
result+='零';
flag=false;
}
}
}
return result.Trim('零');
}
}
using System;
class MoneyToRMB
{
static void Main()
{
string money;
while(true)
{
Console.Write("请输入您要填写的金额!");
money=Console.ReadLine();
//以下判断输入是否正确
int i;
for(i=0;i<money.Length;i++)
{
if(money[i]<'0'||money[i]>'9')
{
if(money[i]=='.')continue;
Console.WriteLine("输入了不是数字的字符,请重新输入!");
i=-1;
break;
}
}
if(i==-1)continue;
if(decimal.Parse(money)<0)
{
Console.WriteLine("输入的不是正数字,请重新输入!");
continue;
}
if(money.Length>12)
{
Console.WriteLine("输入太大,请重新输入!");
continue;
}
break;
}
//输出!
ToBig t=new ToBig();
Console.WriteLine(t.ToRMB(money));
}
}class ToBig
{
public string ToRMB(string number)
{
string[] sample1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
string[] sample2={"元","拾","佰","仟","万","拾","佰","仟","亿"};
string RMB=null,zheng=null,xiao=null;
//把整数和小数分开
if(number.IndexOf('.',0)>0)
{
for(int i=0;i<number.Length;i++)
{
if(number[i]=='.')
{
zheng=number.Substring(0,i);
xiao=number.Substring(i+1,number.Length-i-1);
}
}
}
else
zheng=number;
//整数转换;
int x,y,j=0;
if(int.Parse(zheng)!=0)
{
for(int i=zheng.Length-1;i>=0;i--)
{
x=int.Parse(zheng.Substring(i,1));
y=(i==zheng.Length-1)?0:int.Parse(zheng.Substring(i+1,1));
if(x==0&&j%4==0)
{
RMB=sample2[zheng.Length-i-1]+RMB;
}
else if(x==0&&y!=0)
{
RMB=sample1[0]+RMB;
}
else if(x==0&&y==0){}
else
{
RMB=sample1[x]+sample2[zheng.Length-i-1]+RMB;
}
j++;
}
}
//小数转换;
if(xiao==null&&!zheng.Equals("0"))
{
RMB+="整";
}
else if(xiao.Length==1)
{
RMB+=sample1[int.Parse(xiao.Substring(0,1))]+"角";
}
else if(int.Parse(xiao.Substring(0,1))!=0)
{
RMB+=sample1[int.Parse(xiao.Substring(0,1))]+
"角"+sample1[int.Parse(xiao.Substring(1,1))]+"分";
}
return RMB;
}
}