C#实现小写金额转大写金额

好久没有写博客了。

 

最近项目上用到小写转大写金额,公司同事还准备写一段代码来实现,后来发现架构上有现成的。

 

其实在银行、进销存、CRM等系统中经常可能用到

  这个跟大家分享一下:

 

 

ExpandedBlockStart.gif 小写金额转大写
///   <summary>
        
///         获取金额的大写中文文字            返回:中文数字文字
         //         mvarOrDollar 数字金额大小, mstrLanguage 字符串语言 P:简体中文 C:繁体中文  
         ///   </summary>
        
///   <param name="mvarOrDollar"></param>
        
///   <param name="mstrLanguage"></param>
        
///   <returns></returns>
         public   static   string  GetDollorStr( double  mvarOrDollar)
        {
            
// 返回简体中文的中文描述
             return  GetDollorStr(mvarOrDollar, " P " );
        }
        
public   static   string  GetDollorStr( double  mvarOrDollar, string  mstrLanguage)
        {
            
string  t_word;
            
string  WLAMT;
            
//             double tt;
            t_word  =   "" ;
            
//             If mstrLanguage = "E" Or mstrLanguage = "e" Then
            
//                 t_word = t_word + noinword(Int(mvarOrDollar))
            
//                 If mvarOrDollar <> Int(mvarOrDollar) Then
            
//                     tt = Int((mvarOrDollar - Int(mvarOrDollar)) * 100)
            
//                     t_word = t_word & "And " & " Cents " & noinword(tt)
            
//                 End If
            
//                  
            
//             Else
            
//             WLAMT = mvarOrDollar.ToString();
            WLAMT  =  StrFormat(mvarOrDollar,  12 2 );
            
            
for ( int  i  =   0 ;i < 12 ;i ++ )
            {                       
                
if  (i  !=   9 )
                    t_word 
=  t_word  +  SHRCHG(WLAMT, WLAMT.Substring(i,  1 ), i, mstrLanguage);
                 
            }
            
string  spacestr  =   "" ;
            t_word 
=  t_word  +  spacestr.PadLeft( 40   -  t_word.Length, '   ' );
                
            
//             End If
             return  t_word.Trim();
        }

        
private   static   string  SHRCHG( string  WLAMT,  string  WLCD, int  WLLOC, string  mstrLanguage)
        {
            
string  WLNAME;
            
string  WLDD;
            
if  (mstrLanguage  ==   " C "
                WLDD 
=   " 货ㄕ珺窾ㄕ珺じ  àだ " ;
            
else
                
// WLDD = "亿千百十万千百十元 角分";
                WLDD  =   " 亿仟佰拾万仟佰拾元 角分 " ;
 
            WLNAME 
=   "      " ;
            
switch  (WLCD)
            {
                
case   "   " :
                    WLNAME 
=   "     " ;
                    
break ;
                
case   " 1 " :
                    
// WLNAME = IIf(mstrLanguage = "C", "滁", "壹") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
break ;
                
case   " 2 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "禠", "贰") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                                        
                    
break ;
                
case   " 3 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "把", "叁") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
                    
break ;
                
case   " 4 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "竩", "肆") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
                    
break ;
                
case   " 5 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "ヮ", "伍") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
                    
break ;
                
case   " 6 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "嘲", "陆") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
                    
break ;
                
case   " 7 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "琺", "柒") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
                    
break ;
                
case   " 8 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "", "捌") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
break ;
                
case   " 9 " :
                    
// 'WLNAME = IIf(mstrLanguage = "C", "╤", "玖") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                     if (mstrLanguage.Equals( " C " ))
                        WLNAME 
=   " "    +  WLDD.Substring(WLLOC,  1 );
                    
else
                        WLNAME 
=   " "   +  WLDD.Substring(WLLOC,  1 );
                    
break ;
                
case   " 0 " :
                    
string  locList  =   " 123567 " ;
                    
if  (locList.IndexOf(WLLOC.ToString().Trim())  >   0   &&  WLAMT.Substring(WLLOC  +   1 1 !=   " 0 " )
                        
if (mstrLanguage.Equals( " C " ))
                            WLNAME 
=   " " ;
                        
else
                            WLNAME 
=   " " ;
                    
else
                        WLNAME 
=   "" ;
                    
if  (WLAMT.Substring(WLLOC, 1 ==   " . " )
                        WLNAME 
=  WLDD.Substring(WLLOC,  1 );
                    
                    
if  (WLLOC  ==   4   &&  (WLAMT.Substring( 1 1 !=   " 0 "   ||  WLAMT.Substring( 2 1 !=   " 0 "   ||  WLAMT.Substring( 3 1 !=   " 0 " ))
                        
if (mstrLanguage.Equals( " C " ))
                            WLNAME 
=   " " ;
                        
else
                            WLNAME 
=   " " ;
                    
break ;
                                                                
            }                                                                                                                                                                                                                                                  
            
return  WLNAME.Trim();
        }

        
private   static   string  StrFormat( double  Tlong, int  Along, int  Adec)
        {
            
string  tstr;
   
   
            tstr 
=  Tlong.ToString().Trim();
            
if  (tstr.IndexOf( " . " ==   - 1 )
            {
                tstr 
+=   " .00 " ;
            }
            
else
            {
                
if  (tstr.IndexOf( " . " ==   0 )
                {
                    tstr 
=   " 0 "   +  tstr;
                }
                
if  (tstr.IndexOf( " . " ==  tstr.Length  -   1 )   // 0.  case
                {
                    tstr 
=  tstr  +   " 0 " ;
                }
                
if  (tstr.Substring(tstr.IndexOf( " . " +   1 ).Length  ==   1 )
                {
                    tstr 
=  tstr  +   " 0 " ;
                }
                
else
                {
                    tstr 
=  tstr.Substring( 0 , tstr.IndexOf( " . " +   3 );
                }
                
            }    
            
if  (tstr.Length  <   12
                tstr 
=  tstr.PadLeft( 12 , '   ' );
            
return  tstr;

        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值