问题描述
对C#不是很熟悉,高手帮忙做一下:原代码是我在本论坛里找到的如下
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;//转换数字金额为人民币大写namespaceConvertMoney{publicclassConvertMoney{staticpublicstringconvertMoneytoRMB(decimaldecMoney){stringstrMoney,strOneNum,strTemp,strConverted;inti,iLen;//设初值strConverted="";strMoney=decMoney.ToString();iLen=strMoney.Length;//先取小数位if(strMoney.IndexOf(".")>0){strTemp=strMoney.Substring(strMoney.IndexOf(".")+1,strMoney.Length-strMoney.IndexOf(".")-1);if(strTemp.Length>2){Console.WriteLine("错误:无法计算超过2位的小数");returnstrConverted;}elseif(strTemp=="0"||strTemp=="00"||strTemp=="")strTemp="";else{if(strTemp.Length==1&&strTemp!="0"){strConverted=converNumtoCapital(strTemp)+"角"+strConverted;}else{strOneNum=strTemp.Substring(0,1);strConverted=converNumtoCapital(strOneNum)+(strOneNum!="0"?"角":"")+strConverted;strOneNum=strTemp.Substring(1,1);strConverted=strConverted+(strOneNum!="0"?converNumtoCapital(strOneNum)+"分":"");}}}//取整数部分if(strMoney.IndexOf(".")<0)strTemp=strMoney;elsestrTemp=strMoney.Substring(0,strMoney.IndexOf("."));iLen=strTemp.Length;Console.WriteLine(strTemp);if(iLen>0&&decimal.Parse(strTemp)!=0){strConverted="元"+strConverted;for(i=0;i<iLen;++i){strOneNum=strTemp.Substring(iLen-1-i,1);if((i+1)==1){strConverted=(strOneNum=="0"?"":converNumtoCapital(strOneNum))+strConverted;}elseif(((i+1)%4==2||(i+1)==2)&&i%4!=0&&i%8!=0){if(strOneNum=="0"){if(strConverted.Substring(0,1)=="零"||strConverted.Substring(0,1)=="元"||strConverted.Substring(0,1)=="万"||strConverted.Substring(0,1)=="亿")continue;elsestrConverted="零"+strConverted;}elsestrConverted=converNumtoCapital(strOneNum)+"拾"+strConverted;}elseif(((i+1)%4==3||(i+1)==3)&&i%4!=0){if(strOneNum=="0"){if(strConverted.Substring(0,1)=="零"||strConverted.Substring(0,1)=="元"||strConverted.Substring(0,1)=="万"||strConverted.Substring(0,1)=="亿")continue;elsestrConverted="零"+strConverted;}elsestrConverted=converNumtoCapital(strOneNum)+"佰"+strConverted;}elseif((i+1)%4==0&&i%4!=0){if(strOneNum=="0"){if(strConverted.Substring(0,1)=="零"||strConverted.Substring(0,1)=="元"||strConverted.Substring(0,1)=="万"||strConverted.Substring(0,1)=="亿")continue;elsestrConverted="零"+strConverted;}elsestrConverted=converNumtoCapital(strOneNum)+"千"+strConverted;}elseif(i%4==0&&i%8!=0){Console.WriteLine("万位{0}",i);strConverted=(strOneNum=="0"?"":converNumtoCapital(strOneNum))+"万"+strConverted;}elseif(i%8==0){Console.WriteLine("亿位{0}",i);if(strConverted.Substring(0,1)=="万")strConverted=strConverted.Substring(1,strConverted.Length-1);strConverted=(strOneNum=="0"?"":converNumtoCapital(strOneNum))+"亿"+strConverted;}else{Console.WriteLine(i);strConverted=converNumtoCapital(strOneNum)+strConverted;}}}returnstrConverted;}staticstringconverNumtoCapital(stringstrNum){stringstrCapital="";switch(strNum){case"0":strCapital="零";break;case"1":strCapital="壹";break;case"2":strCapital="贰";break;case"3":strCapital="叁";break;case"4":strCapital="肆";break;case"5":strCapital="伍";break;case"6":strCapital="陆";break;case"7":strCapital="柒";break;case"8":strCapital="捌";break;case"9":strCapital="玖";break;default:strCapital="";break;}returnstrCapital;}}classProgram{staticvoidMain(string[]args){decimali;strings;while(1==1){Console.WriteLine("输入一个金额(直接回车退出):");s=Console.ReadLine();if(s=="")break;//检查金额是否符合规则try{i=decimal.Parse(s);if(i<0)thrownewException("不能是负数");}catch(Exceptione){Console.WriteLine(e.Message);return;}s=ConvertMoney.convertMoneytoRMB(i);Console.WriteLine("人民币大写金额为:{0}",s);}}}}我想要让它成为一个windows控制程序。如下(窗口不是很好上传,只能用下文字说明了,谅解):输入:textbox1-----转换button1---读法:textbox2苦于C#学得不是很好,做了好久都不成功........
解决方案
解决方案二:
不用自己写这个。直接到微软网站上下载个MicrosoftVisualStudioInternationalFeaturePack2.0,里面自带金额转人民币大写,稍作处理就行了。例如:Microsoft.International.Formatters.InternationalNumericFormatterf=newMicrosoft.International.Formatters.InternationalNumericFormatter();stringr=f.Format("L",1234500078.85,newCultureInfo("zh-cn"));Response.Write(r);
输出:拾贰亿叁仟肆佰伍拾万零柒拾捌点捌伍你把这个结果稍作处理,添上元、角、分就可以了。
解决方案三:
添上元、角、分:strings="拾贰亿叁仟肆佰伍拾万零柒拾捌点捌伍";stringr=Regex.Replace(s,@"点(w)(w?)","元$1角$2分");r=r.Replace("角分","角");Response.Write(r);
输出:拾贰亿叁仟肆佰伍拾万零柒拾捌元捌角伍分
解决方案四:
嗯,谢谢楼上的,但是我还想做出这个,想弄懂它....求助