C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)

原创 2004年08月14日 12:14:00

以下C#代码实现了将阿拉伯数字转换成中文大写金额的功能,并Visual Studio.NET 2003 下调试基本通过(未经严格测试,希望各位发现错误后与作者联系fanz2000@sohu.com,或直接在csdn上回帖告知)。

代码的主调函数为ConvertSum,它的参数是string类型的数字字符串。在ASP.NET中调用方式如下:
Label1.Text=ConvertSum("数字字符串");

其代码如下:


  //作者:fanz2000
  //Email:fanz2000@sohu.com
  /// <summary>
  /// 转换数字金额主函数(包括小数)
  /// </summary>
  /// <param name="str">数字字符串</param>
  /// <returns>转换成中文大写后的字符串或者出错信息提示字符串</returns>
  public string ConvertSum(string str)
  {
   if(!IsPositveDecimal(str))
   return "输入的不是正数字!";
   if(Double.Parse(str)>999999999999.99)
   return "数字太大,无法换算,请输入一万亿元以下的金额";
   char[] ch=new char[1];
   ch[0]='.'; //小数点
   string[] splitstr=null; //定义按小数点分割后的字符串数组
   splitstr=str.Split(ch[0]);//按小数点分割字符串
   if(splitstr.Length==1) //只有整数部分
    return ConvertData(str)+"圆整";
   else //有小数部分
   {
    string rstr;
    rstr=ConvertData(splitstr[0])+"圆";//转换整数部分
    rstr+=ConvertXiaoShu(splitstr[1]);//转换小数部分
    return rstr;
   }
  
  }
  /// <summary>
  /// 判断是否是正数字字符串
  /// </summary>
  /// <param name="str"> 判断字符串</param>
  /// <returns>如果是数字,返回true,否则返回false</returns>
  public bool IsPositveDecimal(string str)
  {
   Decimal d;
   try
   {
    d=Decimal.Parse(str);
   
   }
   catch(Exception)
   {
   return false;
   }
   if(d>0)
  return true;
  else
  return false;
  }
  /// <summary>
  /// 转换数字(整数)
  /// </summary>
  /// <param name="str">需要转换的整数数字字符串</param>
  /// <returns>转换成中文大写后的字符串</returns>
  public string ConvertData(string str)
  {
   string tmpstr="";
   string rstr="";
   int strlen=str.Length;
   if (strlen<=4)//数字长度小于四位
   {
    rstr= ConvertDigit(str);
   
   }
   else
   {
   
    if (strlen<=8)//数字长度大于四位,小于八位
    {
     tmpstr=str.Substring(strlen-4,4);//先截取最后四位数字
     rstr=ConvertDigit(tmpstr);//转换最后四位数字
     tmpstr=str.Substring(0,strlen-4);//截取其余数字
     //将两次转换的数字加上萬后相连接
     rstr= String.Concat(ConvertDigit(tmpstr)+"萬",rstr);
     rstr=rstr.Replace("零萬","萬");
     rstr=rstr.Replace("零零","零");
  
    } 
    else
     if(strlen<=12)//数字长度大于八位,小于十二位
    {
     tmpstr=str.Substring(strlen-4,4);//先截取最后四位数字
     rstr=ConvertDigit(tmpstr);//转换最后四位数字
     tmpstr=str.Substring(strlen-8,4);//再截取四位数字
     rstr= String.Concat(ConvertDigit(tmpstr)+"萬",rstr);
     tmpstr=str.Substring(0,strlen-8);
     rstr= String.Concat(ConvertDigit(tmpstr)+"億",rstr);
     rstr=rstr.Replace("零億","億");
     rstr=rstr.Replace("零萬","零");
     rstr=rstr.Replace("零零","零");
     rstr=rstr.Replace("零零","零");
    }
   }
   strlen=rstr.Length;
   if (strlen>=2)
   {
    switch(rstr.Substring(strlen-2,2))
    {
     case "佰零":rstr=rstr.Substring(0,strlen-2)+"佰"; break;
     case "仟零":rstr=rstr.Substring(0,strlen-2)+"仟"; break;
     case "萬零":rstr=rstr.Substring(0,strlen-2)+"萬";break;
     case "億零":rstr=rstr.Substring(0,strlen-2)+"億";break;
   
    }
   }

   return rstr;
  }
  /// <summary>
  /// 转换数字(小数部分)
  /// </summary>
  /// <param name="str">需要转换的小数部分数字字符串</param>
  /// <returns>转换成中文大写后的字符串</returns>
  public string ConvertXiaoShu(string str)
  {
   int strlen=str.Length ;
   string rstr;
   if(strlen==1)
   {
    rstr=ConvertChinese(str)+"角";
    return  rstr;
   }
   else
   {
    string tmpstr=str.Substring(0,1);
    rstr=ConvertChinese(tmpstr)+"角";
    tmpstr=str.Substring(1,1);
    rstr+=ConvertChinese(tmpstr)+"分";
    rstr=rstr.Replace("零分","");
    rstr=rstr.Replace("零角","");
    return rstr;
   }
  
  
  }

  /// <summary>
  /// 转换数字
  /// </summary>
  /// <param name="str">转换的字符串(四位以内)</param>
  /// <returns></returns>
  public string ConvertDigit(string str)
  {
   int strlen=str.Length;
   string rstr="";
   switch (strlen)
   {
    case 1: rstr=ConvertChinese(str);break;
    case 2: rstr=Convert2Digit(str);break;
    case 3: rstr=Convert3Digit(str);break;
    case 4: rstr=Convert4Digit(str);break;
   }
   rstr=rstr.Replace("拾零","拾");
   strlen=rstr.Length;

   return rstr;
  }


  /// <summary>
  /// 转换四位数字
  /// </summary>
  public string Convert4Digit(string str)
  {
   string str1=str.Substring(0,1);
   string str2=str.Substring(1,1);
   string str3=str.Substring(2,1);
   string str4=str.Substring(3,1);
   string rstring="";
   rstring+=ConvertChinese(str1)+"仟";
   rstring+=ConvertChinese(str2)+"佰";
   rstring+=ConvertChinese(str3)+"拾";
   rstring+=ConvertChinese(str4);
   rstring=rstring.Replace("零仟","零");
   rstring=rstring.Replace("零佰","零");
   rstring=rstring.Replace("零拾","零");
   rstring=rstring.Replace("零零","零");
   rstring=rstring.Replace("零零","零");
   rstring=rstring.Replace("零零","零");
   return rstring;
  }
  /// <summary>
  /// 转换三位数字
  /// </summary>
  public string Convert3Digit(string str)
  {
   string str1=str.Substring(0,1);
   string str2=str.Substring(1,1);
   string str3=str.Substring(2,1);
   string rstring="";
   rstring+=ConvertChinese(str1)+"佰";
   rstring+=ConvertChinese(str2)+"拾";
   rstring+=ConvertChinese(str3);
   rstring=rstring.Replace("零佰","零");
   rstring=rstring.Replace("零拾","零");
   rstring=rstring.Replace("零零","零");
   rstring=rstring.Replace("零零","零");
   return rstring;
  }
  /// <summary>
  /// 转换二位数字
  /// </summary>
  public string Convert2Digit(string str)
  {
   string str1=str.Substring(0,1);
   string str2=str.Substring(1,1);
   string rstring="";
   rstring+=ConvertChinese(str1)+"拾";
   rstring+=ConvertChinese(str2);
   rstring=rstring.Replace("零拾","零");
   rstring=rstring.Replace("零零","零");
   return rstring;
  }
  /// <summary>
  /// 将一位数字转换成中文大写数字
  /// </summary>
  public string ConvertChinese(string str)
  {
   //"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分"
   string cstr="";
   switch(str)
   {
    case "0": cstr="零";break;
    case "1": cstr="壹";break;
    case "2": cstr="贰";break;
    case "3": cstr="叁";break;
    case "4": cstr="肆";break;
    case "5": cstr="伍";break;
    case "6": cstr="陆";break;
    case "7": cstr="柒";break;
    case "8": cstr="捌";break;
    case "9": cstr="玖";break;
   }
   return(cstr);
  }

C#实现阿拉伯数字到大写中文的转换

原文地址:http://www.jb51.net/article/8061.htm /// /// 金额转为大写金额 /// public class MoneyCon...
  • cxcalm
  • cxcalm
  • 2015年08月18日 09:17
  • 3071

C# 数字转换成中文

  • 2014年08月08日 23:03
  • 51KB
  • 下载

C# 将小写数字转换为 一般中文大写数字 和 人民币大写数字

网络转载 class DigitToChnText {     private readonly char[] chnGenText;     private readonly char[] ...
  • ty_soft
  • ty_soft
  • 2012年03月04日 23:20
  • 3122

黑马程序员——金额转换,阿拉伯数字转换成中文大写

package com.heima.problemA; import java.util.ArrayList; import java.util.List; /* * 思路: 待转换的整数分为...
  • f309587969
  • f309587969
  • 2011年12月29日 13:46
  • 1319

关于C#实现阿拉伯数字转换成中文大写

public enum Chinese_Num         {             零 = 0, 壹 = 1, 贰 = 2, 叁 = 3, 肆 = 4, 伍 = 5, 陆 = 6, 柒 =...
  • xy516932394
  • xy516932394
  • 2012年04月18日 10:37
  • 413

阿拉伯数字小写金额转换成中文大写金额C程序说明

阿拉伯数字小写金额转换成中文大写金额C程序说明 1、问题的提出      寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据、银行业务回单、商场销售凭...
  • hwmt2012
  • hwmt2012
  • 2014年07月09日 20:12
  • 2337

金额转换,阿拉伯数字的金额转换成中国传统大写汉字的形式

package com.lc.recharge.test; import java.math.BigDecimal; public class MoneyUtil { private stat...
  • qq_34096082
  • qq_34096082
  • 2016年08月19日 16:49
  • 336

阿拉伯数字转换成金额大写金额(包括小数)

/// /// 转换人民币大小金额 /// /// 金额 /// 返回大写形式 public static string CmycurD(decimal num) { st...
  • taomanman
  • taomanman
  • 2012年04月16日 22:43
  • 1266

阿拉伯数字转换成对应的大写中文输出

记得上次换工作时去某BOSS厂商面试时,有这样一道题(RT),当时只是简单的说说想法,今天有时间,把具体的细节实现了,如下:   /** * Description: 把输入的阿拉巴数字转换...
  • mahongming
  • mahongming
  • 2011年12月19日 14:36
  • 2909

java练习:金额转换,阿拉伯数字转换成中文传统形式

import java.util.Scanner; public class Test2 { public static void main(String[] args) { // TOD...
  • fmi110
  • fmi110
  • 2015年09月05日 12:39
  • 1667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
举报原因:
原因补充:

(最多只允许输入30个字)