C# 大小写金额转化
背景:今天做打印预览的时候,看到同事是使用JS进行的金额小写转大写,果不其然,几天后就到了问题了,金额252.98转化为大写变成了柒分,相差了1分钱;
因此,决定由后台来进行处理,给出一个正则写法:
public static String ConvertToWords(Decimal number)
{
var s = number.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");
var 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}");
var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
return r;
}
用于平常的金额大小写转化是没有问题的;
如果有问题,请贴出例子,欢迎评论;