您的位置:首页 > 编程语言 > C#

C# 阿拉伯数字转中文大写,阿拉伯数字转金额

2013-06-09 16:33 393 查看
ToRMB(12345.12) 返回: 壹万贰仟叁佰肆拾伍元壹角贰分
ToRMB(12345) 返回: 壹万贰仟叁佰肆拾伍元整
ToUpper(12345.12) 返回: 一万二千三百四十五点一二

/// <summary>
/// 数字转中文数字
/// </summary>
public abstract class ChinaNum
{
/// <summary>
/// 数字转大写金额(壹、贰、叁)
/// </summary>
/// <param name="value">能转换成数字或者小数的任意类型</param>
/// <returns>返回大写金额</returns>
public static string ToRMB(object value)
{
try
{
string hash = double.Parse(value.ToString()).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 results = Regex.Replace(hash, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[.]|$))))", "${b}${z}");
hash = Regex.Replace(results, ".", delegate(Match m) { return "负圆空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
if (hash.Substring(hash.Length - 1, 1) == "圆") { hash += "整"; }
return hash;
}
catch (Exception)
{
return "零";
}
}

/// <summary>
/// 数字转大写数字(一、二、三)
/// </summary>
/// <param name="value">能转换成数字或者小数的任意类型</param>
/// <returns>返回大写数字</returns>
public static string ToUpper(object value)
{
try
{
string hash = double.Parse(value.ToString()).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 results = Regex.Replace(hash, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[.]|$))))", "${b}${z}");
hash = Regex.Replace(results, ".", delegate(Match m) { return "负点空〇一二三四五六七八九空空空空空空空分角十百千万亿兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
if (hash.Substring(hash.Length - 1, 1) == "点")
{
hash=hash.Replace("点", "");
return hash;
}
else
{
hash = hash.Replace("角", "").Replace("分","");
return hash;
}
}
catch (Exception)
{
return "〇";
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: