| 以下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); 
} 
 
 
 
 
 |