博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#将数字金额转化为大写金额(转载)
阅读量:6041 次
发布时间:2019-06-20

本文共 7507 字,大约阅读时间需要 25 分钟。

public class ZHH{    public ZHH()    {        //        // TODO: Add constructor logic here        //    }    /// 转换数字金额主函数(包括小数)    /// 数字字符串    /// 转换成中文大写后的字符串或者出错信息提示字符串    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;        }    }    /// 判断是否是正数字字符串      /// 判断字符串     /// 如果是数字,返回true,否则返回false    public bool IsPositveDecimal(string str)     {             Decimal d;                 try                 {                         d = Decimal.Parse(str);          }                    catch (Exception)          {                     return false;         }        if (d > 0)        {            return true;        }        else        {            return false;        }    }    /// 转换数字(整数)    /// 需要转换的整数数字字符串       /// 转换成中文大写后的字符串        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("零零", "零");            }            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;      }          /// 转换数字(小数部分)         /// 需要转换的小数部分数字字符串     /// 转换成中文大写后的字符串     public string ConvertXiaoShu(string str)    {        int strlen = str.Length;        string rstr;        if (strlen == 1)        {            rstr = ConvertChinese(str) + "角";            return rstr;        }        else        {            string tmtr = str.Substring(0, 1);            rstr = ConvertChinese(tmtr) + "角";            tmtr = str.Substring(1, 1);            rstr += ConvertChinese(tmtr) + "分";            rstr = rstr.Replace("零分", "");            rstr = rstr.Replace("零角", "");            return rstr;        }    }    /// 转换数字          /// 转换的字符串(四位以内)     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;    }    ///转换四位数字      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;    }    /// 转换三位数字     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;    }    /// 转换二位数字      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;          }           /// 将一位数字转换成中文大写数字      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);     }}

 

转载于:https://www.cnblogs.com/zhouhuitao/archive/2013/02/18/2915221.html

你可能感兴趣的文章
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Shell命令-文件压缩解压缩之gzip、zip
查看>>
个人总结
查看>>
uva 673 Parentheses Balance
查看>>
Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
查看>>
css 禁止选中文本
查看>>
算术运算表达式正则及分析
查看>>
Oracle 12c 多租户 手工创建 pdb 与 手工删除 pdb
查看>>
shell初涉
查看>>
[浪子学编程][MS Enterprise Library]ObjectBuilder之创建策略祥解(二)
查看>>