.NET把小写数字金额转换成大写人民币金额的两种算法

来源:互联网 发布:怎么复制汇总数据 编辑:程序博客网 时间:2024/06/02 12:36

第一种方法:
用正则表达式,C#方法如下

usingSystem.Text.RegularExpressions;//首先引入命名空间

privatestringDaXie(string money)
{
string s =double.Parse(money).ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
string d =Regex.Replace(s,@"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))","${b}${z}");
returnRegex.Replace(d,".",delegate(Match m){return"负圆空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万億兆京垓秭穰"[m.Value[0]-'-'].ToString();});

}

第二种方法:
采用数组,C#方法如下
privatestringDaXie(string money)
{
//将小写金额转换成大写金额
doubleMyNumber=Convert.ToDouble(money);
String[]MyScale={"分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","兆","拾","佰","仟"};
String[]MyBase={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String M ="";
bool isPoint =false;
if(money.IndexOf(".")!=-1)
{
money= money.Remove(money.IndexOf("."),1);
isPoint=true;
}
for(int i = money.Length; i >0; i--)
{
intMyData=Convert.ToInt16(money[money.Length- i].ToString());//?
M+=MyBase[MyData];//?
if(isPoint==true)
{
M+=MyScale[i-1];//?
}
else
{
M+=MyScale[i+1];//?
}
}
return M;

}


引用:http://mou518.blog.163.com/blog/static/1756052222012126737195/

0 0
原创粉丝点击