//转换小写的日期字串至大写字串
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('零');
}
}

解决方案 »

  1.   

    //[阿拉伯数字转换成中文大写金额]请求指点!
    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;
        }
    }