将人民币的数字表示转化成大写表示(C#版)
using System;
namespace Test.Com
{
?/// <summary>
?/// 功能:字符串處理函數(shù)集
?/// </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 構(gòu)造函數(shù)
? public DealString()
? {
?? //
?? // TODO: 在此處添加構(gòu)造函數(shù)邏輯
?? //
? }
? #endregion
? #region 公共方法
? public void ConvertToChineseNum()
? {
?? string numList="零壹貳叁肆伍陸柒捌玖";
?? string rmbList = "分角元拾佰仟萬拾佰仟億拾佰仟萬";
?? double number=0;
?? string tempOutString=null;
?? try
?? {
??? number=double.Parse(this.inputString);
?? }
?? catch
?? {
??? this.noteMessage="傳入?yún)?shù)非數(shù)字!";
??? return;
?? }
??
?? if(number>9999999999999.99)
??? this.noteMessage="超出范圍的人民幣值";
?? //將小數(shù)轉(zhuǎn)化為整數(shù)字符串
?? 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
?}
}
轉(zhuǎn)載于:https://www.cnblogs.com/hzuIT/articles/682812.html
總結(jié)
以上是生活随笔為你收集整理的将人民币的数字表示转化成大写表示(C#版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。