将人民币的数字表示转化成大写表示(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
 }
}

posted @ 2007-07-19 21:11  Athrun  阅读(296)  评论(0编辑  收藏  举报