欢迎光临
我们一直在努力

C#实现的【阿拉伯数字转换成中文大写金额】代码-.NET教程,C#语言

建站超值云服务器,限时71元/月

以下c#代码实现了将阿拉伯数字转换成中文大写金额的功能,并visual studio.net 2003 下调试基本通过(未经严格测试,希望各位发现错误后与作者联系fanz2000@sohu.com,或直接在csdn上回帖告知)。

代码的主调函数为convertsum,它的参数是string类型的数字字符串。在asp.net中调用方式如下:

label1.text=convertsum("数字字符串");

其代码如下:

//作者:fanz2000

//email:fanz2000@sohu.com

///

/// 转换数字金额主函数(包括小数)

///

/// 数字字符串

/// 转换成中文大写后的字符串或者出错信息提示字符串

public string convertsum(string str)

{

if(!ispositvedecimal(str))

return "输入的不是正数字!";

if(double.parse(str)>999999999999.99)

return "数字太大,无法换算,请输入一万亿元以下的金额";

char[] ch=new char[1];

ch[0]=.; //小数点

string[] splitstr=null; //定义按小数点分割后的字符串数组

splitstr=str.split(ch[0]);//按小数点分割字符串

if(splitstr.length==1) //只有整数部分

return convertdata(str)+"圆整";

else //有小数部分

{

string rstr;

rstr=convertdata(splitstr[0])+"圆";//转换整数部分

rstr+=convertxiaoshu(splitstr[1]);//转换小数部分

return rstr;

}

}

///

/// 判断是否是正数字字符串

///

/// 判断字符串

/// 如果是数字,返回true,否则返回false

public bool ispositvedecimal(string str)

{

decimal d;

try

{

d=decimal.parse(str);

}

catch(exception)

{

return false;

}

if(d>0)

return true;

else

return false;

}

///

/// 转换数字(整数)

///

/// 需要转换的整数数字字符串

/// 转换成中文大写后的字符串

public string convertdata(string str)

{

string tmpstr="";

string rstr="";

int strlen=str.length;

if (strlen<=4)//数字长度小于四位

{

rstr= convertdigit(str);

}

else

{

if (strlen<=8)//数字长度大于四位,小于八位

{

tmpstr=str.substring(strlen-4,4);//先截取最后四位数字

rstr=convertdigit(tmpstr);//转换最后四位数字

tmpstr=str.substring(0,strlen-4);//截取其余数字

//将两次转换的数字加上萬后相连接

rstr= string.concat(convertdigit(tmpstr)+"萬",rstr);

rstr=rstr.replace("零萬","萬");

rstr=rstr.replace("零零","零");

}

else

if(strlen<=12)//数字长度大于八位,小于十二位

{

tmpstr=str.substring(strlen-4,4);//先截取最后四位数字

rstr=convertdigit(tmpstr);//转换最后四位数字

tmpstr=str.substring(strlen-8,4);//再截取四位数字

rstr= string.concat(convertdigit(tmpstr)+"萬",rstr);

tmpstr=str.substring(0,strlen-8);

rstr= string.concat(convertdigit(tmpstr)+"億",rstr);

rstr=rstr.replace("零億","億");

rstr=rstr.replace("零萬","零");

rstr=rstr.replace("零零","零");

rstr=rstr.replace("零零","零");

}

}

strlen=rstr.length;

if (strlen>=2)

{

switch(rstr.substring(strlen-2,2))

{

case "佰零":rstr=rstr.substring(0,strlen-2)+"佰"; break;

case "仟零":rstr=rstr.substring(0,strlen-2)+"仟"; break;

case "萬零":rstr=rstr.substring(0,strlen-2)+"萬";break;

case "億零":rstr=rstr.substring(0,strlen-2)+"億";break;

}

}

return rstr;

}

///

/// 转换数字(小数部分)

///

/// 需要转换的小数部分数字字符串

/// 转换成中文大写后的字符串

public string convertxiaoshu(string str)

{

int strlen=str.length ;

string rstr;

if(strlen==1)

{

rstr=convertchinese(str)+"角";

return rstr;

}

else

{

string tmpstr=str.substring(0,1);

rstr=convertchinese(tmpstr)+"角";

tmpstr=str.substring(1,1);

rstr+=convertchinese(tmpstr)+"分";

rstr=rstr.replace("零分","");

rstr=rstr.replace("零角","");

return rstr;

}

}

///

/// 转换数字

///

/// 转换的字符串(四位以内)

///

public string convertdigit(string str)

{

int strlen=str.length;

string rstr="";

switch (strlen)

{

case 1: rstr=convertchinese(str);break;

case 2: rstr=convert2digit(str);break;

case 3: rstr=convert3digit(str);break;

case 4: rstr=convert4digit(str);break;

}

rstr=rstr.replace("拾零","拾");

strlen=rstr.length;

return rstr;

}

///

/// 转换四位数字

///

public string convert4digit(string str)

{

string str1=str.substring(0,1);

string str2=str.substring(1,1);

string str3=str.substring(2,1);

string str4=str.substring(3,1);

string rstring="";

rstring+=convertchinese(str1)+"仟";

rstring+=convertchinese(str2)+"佰";

rstring+=convertchinese(str3)+"拾";

rstring+=convertchinese(str4);

rstring=rstring.replace("零仟","零");

rstring=rstring.replace("零佰","零");

rstring=rstring.replace("零拾","零");

rstring=rstring.replace("零零","零");

rstring=rstring.replace("零零","零");

rstring=rstring.replace("零零","零");

return rstring;

}

///

/// 转换三位数字

///

public string convert3digit(string str)

{

string str1=str.substring(0,1);

string str2=str.substring(1,1);

string str3=str.substring(2,1);

string rstring="";

rstring+=convertchinese(str1)+"佰";

rstring+=convertchinese(str2)+"拾";

rstring+=convertchinese(str3);

rstring=rstring.replace("零佰","零");

rstring=rstring.replace("零拾","零");

rstring=rstring.replace("零零","零");

rstring=rstring.replace("零零","零");

return rstring;

}

///

/// 转换二位数字

///

public string convert2digit(string str)

{

string str1=str.substring(0,1);

string str2=str.substring(1,1);

string rstring="";

rstring+=convertchinese(str1)+"拾";

rstring+=convertchinese(str2);

rstring=rstring.replace("零拾","零");

rstring=rstring.replace("零零","零");

return rstring;

}

///

/// 将一位数字转换成中文大写数字

///

public string convertchinese(string str)

{

//"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分"

string cstr="";

switch(str)

{

case "0": cstr="零";break;

case "1": cstr="壹";break;

case "2": cstr="贰";break;

case "3": cstr="叁";break;

case "4": cstr="肆";break;

case "5": cstr="伍";break;

case "6": cstr="陆";break;

case "7": cstr="柒";break;

case "8": cstr="捌";break;

case "9": cstr="玖";break;

}

return(cstr);

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » C#实现的【阿拉伯数字转换成中文大写金额】代码-.NET教程,C#语言
分享到: 更多 (0)

相关推荐

  • 暂无文章