数字转中文金额大写输出

数字转中文金额大写输出:
public string ToChineseAmount(decimal number)
{
    string s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
    string d = Regex.Replace(s, @"((?<=\.)[0-9]..|(?!\.)[0-9]..)", m => "零壹贰叁肆伍陆柒捌玖"[(int)m.Value[0] - 48] + (m.Value[1] == '0' ? "" : "元空拾佰仟万空拾佰仟亿空拾佰仟万空拾佰仟整角分"[m.Value[1] - 'A']));
    
    // 二次正则:处理连续的零和单位冗余
    return Regex.Replace(d, @"零项|零拾|零佰|零仟|零亿|零万|零元", "")
                .Replace("零零", "")
                .Replace("零亿", "亿")
                .Replace("零万", "")
                .Replace("零元", "")
                .TrimStart('').Replace("元零", "");
}

 一行代码版:

string result = Regex.Replace(decimal.Parse(num).ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#G#E#D#C#F#E#D#C#.0B0A"), @"((?<=\.)[0-9]..|(?!\.)[0-9]..)", m => "零壹贰叁肆伍陆柒捌玖"[(int)m.Value[0] - 48] + (m.Value[1] == '0' ? "" : "元空拾佰仟万空拾佰仟亿空拾佰仟万空拾佰仟整角分"[m.Value[1] - 'A']));

 

posted on 2026-03-21 18:05  wakaka_wka  阅读(17)  评论(0)    收藏  举报