将人民币的数字表示转化成大写表示(C#版)
实在没有什么好讲的,就是一个方法,大家拿去用吧
using System;
namespace Test.Com { /// <summary> /// 功能:字符串处理函数集 /// </summary> public class DealString { #region 私有成员 /// <summary> /// 输入字符串 /// </summary> private string inputString=null; /// <summary> /// 输出字符串 /// </summary> private string outString=null; /// <summary> /// 提示信息 /// </summary> private string noteMessage=null; #endregion
#region 公共属性 /// <summary> /// 输入字符串 /// </summary> public string InputString { get{return inputString;} set{inputString=value;} } /// <summary> /// 输出字符串 /// </summary> public string OutString { get{return outString;} set{outString=value;} } /// <summary> /// 提示信息 /// </summary> public string NoteMessage { get{return noteMessage;} set{noteMessage=value;} } #endregion #region 构造函数 public DealString() { // // TODO: 在此处添加构造函数逻辑 // } #endregion
#region 公共方法 public void ConvertToChineseNum() { string numList="零壹贰叁肆伍陆柒捌玖"; string rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万"; double number=0; string tempOutString=null;
try { number=double.Parse(this.inputString); } catch { this.noteMessage="传入参数非数字!"; return; } if(number>9999999999999.99) this.noteMessage="超出范围的人民币值";
//将小数转化为整数字符串 string tempNumberString=Convert.ToInt64(number*100).ToString(); int tempNmberLength=tempNumberString.Length; int i=0; while(i<tempNmberLength) { int oneNumber=Int32.Parse(tempNumberString.Substring(i,1)); string oneNumberChar=numList.Substring(oneNumber,1); string oneNumberUnit=rmbList.Substring(tempNmberLength-i-1,1); if(oneNumberChar!="零") tempOutString+=oneNumberChar+oneNumberUnit; else { if(oneNumberUnit=="亿"||oneNumberUnit=="万"||oneNumberUnit=="元"||oneNumberUnit=="零") { while (tempOutString.EndsWith("零")) { tempOutString=tempOutString.Substring(0,tempOutString.Length-1); }
} if(oneNumberUnit=="亿"||(oneNumberUnit=="万"&&!tempOutString.EndsWith("亿"))||oneNumberUnit=="元") { tempOutString+=oneNumberUnit; } else { bool tempEnd=tempOutString.EndsWith("亿"); bool zeroEnd=tempOutString.EndsWith("零"); if(tempOutString.Length>1) { bool zeroStart=tempOutString.Substring(tempOutString.Length-2,2).StartsWith("零"); if(!zeroEnd&&(zeroStart||!tempEnd)) tempOutString+=oneNumberChar; } else { if(!zeroEnd&&!tempEnd) tempOutString+=oneNumberChar; } } } i+=1; }
while (tempOutString.EndsWith("零")) { tempOutString=tempOutString.Substring(0,tempOutString.Length-1); }
while(tempOutString.EndsWith("元")) { tempOutString=tempOutString+"整"; }
this.outString=tempOutString;
} #endregion } }
|