. NET 技术讨论

学于明志,交流增加见识,讨论改变思维
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

将货币数字描述转化成中文描述

Posted on 2008-01-21 09:39    阅读(215)  评论(0编辑  收藏  举报
/// <summary>
        
/// 将货币数字描述转化成中文描述(整数部分控制在12位,小数部分在2位数)
        
/// </summary>
        
/// <param name="str"></param>
        
/// <returns></returns>

        public static string DoNumberCurrencyToChineseCurrency(string str)
        
{
            
if (str.Length < 1)
            
{
                
return string.Empty;
            }

            
//去掉描述货币多余的字符[,]
            str = str.Replace(","string.Empty);
            str 
= str.Replace(""string.Empty);
            str 
= str.Replace(""".");
            str 
= str.Replace("-"string.Empty);
            str 
= str.Replace("+"string.Empty);
            str 
= str.Replace(""string.Empty);

            System.Text.RegularExpressions.Regex reg1 
= new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.]?\d*$");
            
if (!reg1.IsMatch(str))
            
{//参数不是纯数字
                return string.Empty;
            }


            
string[] cstr ="""""""""""""""""""" };
            
string[] wstr ="""""""""""""""""""亿""""""" };

            
while (str.StartsWith("0"))
            
{//去掉字符开头的0
                str = str.Substring(1, str.Length - 1);
            }

            
string strInt = str;//整数部分字符串
            string strDec = string.Empty;//小数部分字符串
            string ReturnDec = string.Empty;//返回的小数部分的中文描述
            int Index = str.IndexOf(".");//查找是否有小数
            if (Index > 0)
            
{//存在小数
                strInt = str.Substring(0, Index);
                strDec 
= str.Substring(Index + 1);
                
string[] fsstr = new string[] """" };
                
for (int a = 0; a < 2; a++)
                
{
                    ReturnDec 
= ReturnDec + cstr[int.Parse(strDec[a].ToString())] + fsstr[a];
                }

            }

            
//计算整数部分
            int len = strInt.Length;
            
int i;
            
string tmpstr, rstr;
            rstr 
= "";
            
for (i = 1; i <= len; i++)
            
{
                tmpstr 
= strInt.Substring(len - i, 1);
                rstr 
= string.Concat(cstr[Int32.Parse(tmpstr)] + wstr[i], rstr);
            }

            rstr 
= rstr.Replace("拾零""");
            rstr 
= rstr.Replace("零拾""");
            rstr 
= rstr.Replace("零佰""");
            rstr 
= rstr.Replace("零仟""");
            rstr 
= rstr.Replace("零万""");
            
for (i = 1; i <= 6; i++)
                rstr 
= rstr.Replace("零零""");
            rstr 
= rstr.Replace("零万""");
            rstr 
= rstr.Replace("零亿""亿");
            rstr 
= rstr.Replace("零零""");
            rstr 
+= "";

            
if (ReturnDec.Length > 0)
            
{//存在小数
                rstr = rstr + ReturnDec;
            }

            
else
            
{
                rstr 
+= "";
            }

            
return rstr;
        }