数字转中文金额大写输出
数字转中文金额大写输出:
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']));
浙公网安备 33010602011771号