实现无刷新即时获取RMB的大写字

24 篇文章 0 订阅

 

看了别人一个把数字转为RMB的类,我把它运用到Ajax里面,实现无刷新即时获取RMB的大写字

 

ToChineseValue.cs
using  System;
using  System.Data;
using  System.Configuration;
using  System.Linq;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Xml.Linq;
using  System.IO;
using  System.Text;

///   <summary>
/// ToChineseValue 的摘要说明
///   </summary>
public   class  ToChineseValue

    
private   enum  chineseChar{零,壹,贰,叁,肆,伍,陆,柒,捌,玖};
    
private   enum  charValue{个 = 1 ,十,百,千}
    
private   enum  c{元 = 1 ,万,亿,兆};
    
private   enum  afterPoint{角,分};
    
public  ToChineseValue()
    {
        
//
        
//  TODO: 在此处添加构造函数逻辑
        
//
    }
    
public   string  toChineseChar( decimal  d)
    {
        
decimal  flag = 0 ;
        
if (d < 0 )
        {
            flag
= d;
            d
=- d;
        }
        
        
string  strChinese = "" ;
        
string  nextString = "" ;

        System.Globalization.NumberFormatInfo fmat
= new  System.Globalization.NumberFormatInfo();
        fmat.CurrencyDecimalDigits
= 2 ;            
        fmat.CurrencySymbol
= "" ;                
        fmat.CurrencyGroupSizes 
= new   int  []{ 4 , 4 , 4 , 4 };
        fmat.CurrencyGroupSeparator
= " , " ;

        
string  strx = d.ToString( " c " ,fmat);        
        
string  []afterArray = strx.ToString() .Split ( ' . ' );

        
char [] prePoint = afterArray[ 0 ].ToCharArray ();
        
char  [] nextChar = afterArray[ 1 ].ToCharArray ();                
        
        
if (System.Convert .ToDecimal (afterArray[ 0 ].ToString ()) == 0 )
        { strChinese
= "" ;}
        
else
        {            
            
string  [] str = afterArray[ 0 ].ToString().Split ( ' , ' );
            
int  Num = str.Length ;        
            
// 交错数组用来放四个一组的数组
             char [][]part = new   char  [Num][];        
            
for ( int  i = 0 ;i < str.Length ;i ++ )
            {                
                part[i]
= str[i].ToCharArray ();                
            }        
            
for ( int  i = 0 ;i < Num;i ++ )
            {                
                
for ( int  j = 0 ;j < part[i].Length;j ++ )                
                {
                    
// 用枚举完成汉字的转换
                    strChinese += ((chineseChar) int .Parse (part[i][j].ToString ())).ToString ();
                    
// 用枚举完成单位: 个 十 百 千 
                    strChinese += ((charValue)(part[i].Length - j)).ToString();                        
                }    
                
// 以下为处理元 万 亿 兆 
                strChinese += ((c)(part.Length - i)).ToString();
            }                
        }            
        
// 处理点号后面的小数部分        
         if (System.Convert.ToDecimal(afterArray[ 1 ].ToString ()) == 0 && System.Convert.ToDecimal(afterArray                           [ 0 ].ToString ()) != 0 )
        {
            nextString
= " " ;
        }
        
else
        {    
            
for ( int  i = 0 ;i < 2 ;i ++ )
            {    
                
int  t = int .Parse (nextChar[i].ToString ());                
                nextString
+= ((chineseChar) int .Parse (nextChar[i].ToString ())).ToString ();
                nextString
+= ((afterPoint)(i)).ToString();
                
if (t == 0 )
                {
                    StringBuilder str
= new  StringBuilder(nextString);                                            
                    nextString
= str.Replace ( " 零零 " , " " ).ToString ();
                    nextString
= str.Replace ( " 零角零分 " , " 零元 " ).ToString ();                        
                }
            }                
        }                
        StringBuilder sb
= new  StringBuilder(strChinese);    
        
for ( int  i = 0 ;i < 4 ;i ++ )
        {    
            strChinese
= sb.Replace ( " " , "" ).ToString ();                
            strChinese
= sb.Replace ( " 零元 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 零万 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 亿万 " , " 亿 " ).ToString ();
            strChinese
= sb.Replace ( " 零亿 " , " 亿 " ).ToString ();
            strChinese
= sb.Replace ( " 零十 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 零百 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 零千 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 零零 " , " " ).ToString ();
            strChinese
= sb.Replace ( " 零角零分 " , " " ).ToString ();
        }
        
if (flag >= 0 )
        {
            
return  strChinese + nextString;
        }
        
return   " " + strChinese + nextString;
    }
}

 

代码下载(vs2008+Framework3.5)

http://www.cnblogs.com/Files/yangcai/numToRMB.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值