替换数字金额为大写金额

引用:string money=ConvertMoney(TextBox1.Text.Trim());

支持12位数字:

需要定义的数组
//定义数字转换
private static string[] cstr={"零","壹","贰","叁","肆", "伍", "陆","柒","捌","玖"};
//定义金额单位转换
private static string[] wstr={"","","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"};
//定义金额单位转换
private static string[] wstrdot={"","分","角"};



替换的两个方法
/** <summary>
/// 转换点以前的数字为大写金额
/// </summary>
/// <param name="strMoney">接受用户输入的数字金额</param>
/// <returns>返回大写金额书写形式</returns>
public string ConvertMoney(string strMoney)
{
int len=0;
int i=0;
string dotMoney=string.Empty;
if(strMoney.IndexOf(".")!=-1)
{
//点后的金额字符串
dotMoney=ConvertDotMoney(strMoney.Substring(strMoney.IndexOf(".")+1));
string tmpmoney=strMoney.Substring(0,strMoney.IndexOf("."));
//点前的字符串
len=strMoney.Substring(0,strMoney.IndexOf(".")).Length;
}
else
{
//如果没有点就直接获取长度
len=strMoney.Length;
}
string tmpstr,rstr;
rstr="";
//循环替换数字为大写并把后替换的大写放在字符串前面
for(i=1;i<=len;i++)
{
tmpstr=strMoney.Substring(len-i,1);
rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstr[i],rstr);
}
if(rstr.Substring(rstr.Length-1,1)=="零")
{
rstr=rstr.Substring(0,rstr.Length-1);
}
//替换大写造成的重复或误判
rstr=rstr.Replace("零拾","零");
rstr=rstr.Replace("零佰","零");
rstr=rstr.Replace("零仟","零");
rstr=rstr.Replace("零萬","萬");
for(i=1;i<=6;i++)
rstr=rstr.Replace("零零","零");
rstr=rstr.Replace("零萬","零");
rstr=rstr.Replace("零億","億");
rstr=rstr.Replace("零零","零");
if(rstr.Substring(0,1)=="零")
{
rstr=rstr.Substring(1);
}
rstr+="元";
rstr+=dotMoney;
return rstr;
}

/** <summary>
/// 返回点以后的小写金额
/// </summary>
/// <param name="strMoney">点后的数字</param>
/// <returns>返回点后的大写金额</returns>
public string ConvertDotMoney(string strMoney)
{
int len=0;
int i=0;
if(strMoney.IndexOf(".")!=-1)
{
Response.Write("您输入的数字有误!");
}
else
{
//如果没有点就直接获取长度
len=strMoney.Length;
}
string tmpstr,rstr;
rstr="";
//循环替换数字为大写并把后替换的大写放在字符串前面
for(i=1;i<=len;i++)
{
tmpstr=strMoney.Substring(len-i,1);
rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstrdot[i],rstr);
}
if(rstr.Substring(rstr.Length-1,1)=="零")
{
rstr=rstr.Substring(0,rstr.Length-1);
}
//替换大写造成的重复或误判
rstr=rstr.Replace("零分","");
rstr=rstr.Replace("零角","零");
for(i=1;i<=1;i++)
rstr=rstr.Replace("零零","");
//
// if(rstr.Substring(0,1)=="零")
// {
// rstr=rstr.Substring(1);
// }
rstr+="整";
return rstr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值