zoukankan      html  css  js  c++  java
  • 金额大小写转换

    刚开通博客也不知道写什么,看博客太空了,就把一个项目中金额大小写转换的类抽出来。废话不说上图上代码。

    先看个demo

    目前只能精确到 分

    主要代码如下

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Web;
      5 
      6 namespace 大小写转换
      7 {
      8     public class ConvertHelper
      9     {
     10         /// <summary>
     11         /// 将小写数字转成大写金额
     12         /// </summary>
     13         /// <param name="str"></param>
     14         /// <returns></returns>
     15         public string ConvertNum(string str)
     16         {
     17             string rstr = "";
     18             if (!IsPositveDecimal(str))
     19             {
     20                 rstr = "";
     21                 str = str.Substring(1);
     22             }
     23             //return "输入的不是正数字!";
     24             if (Double.Parse(str) > 999999999999.99)
     25                 return "数字太大,无法换算,请输入一万亿元以下的金额";
     26             char[] ch = new char[1];
     27             ch[0] = '.'; //小数点
     28             string[] splitstr = null; //定义按小数点分割后的字符串数组
     29             splitstr = str.Split(ch[0]); //按小数点分割字符串
     30             if (splitstr.Length == 1) //只有整数部分
     31                 return ConvertData(str) + "圆整";
     32             else //有小数部分
     33             {
     34 
     35                 rstr += ConvertData(splitstr[0]) + "";//转换整数部分
     36                 rstr += ConvertXiaoShu(splitstr[1]); //转换小数部分
     37                 return rstr;
     38             }
     39         }
     40 
     41 
     42         ///
     43         /// 判断是否是正数字字符串
     44         ///
     45         /// 判断字符串
     46         /// 如果是数字,返回true,否则返回false
     47         public bool IsPositveDecimal(string str)
     48         {
     49             Decimal d;
     50             try
     51             {
     52                 d = Decimal.Parse(str);
     53             }
     54             catch (Exception)
     55             {
     56                 return false;
     57             }
     58             if (d >= 0)
     59                 return true;
     60             else
     61                 return false;
     62         }
     63 
     64 
     65         ///
     66         /// 转换数字(整数)
     67         ///
     68         /// 需要转换的整数数字字符串
     69         /// 转换成中文大写后的字符串
     70         public string ConvertData(string str)
     71         {
     72             string tmpstr = "";
     73             string rstr = "";
     74             int strlen = str.Length;
     75             if (strlen <= 4)//数字长度小于四位
     76             {
     77                 rstr = ConvertDigit(str);
     78 
     79             }
     80             else
     81             {
     82                 if (strlen <= 8)//数字长度大于四位,小于八位
     83                 {
     84                     tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字
     85                     rstr = ConvertDigit(tmpstr);//转换最后四位数字
     86                     tmpstr = str.Substring(0, strlen - 4);//截取其余数字
     87                     //将两次转换的数字加上万后相连接
     88                     rstr = String.Concat(ConvertDigit(tmpstr) + "", rstr);
     89                     rstr = rstr.Replace("零零", "");
     90                 }
     91                 else
     92                     if (strlen <= 12)//数字长度大于八位,小于十二位
     93                     {
     94                         tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字
     95                         rstr = ConvertDigit(tmpstr);//转换最后四位数字
     96                         tmpstr = str.Substring(strlen - 8, 4); //再截取四位数字
     97                         rstr = String.Concat(ConvertDigit(tmpstr) + "", rstr);
     98                         tmpstr = str.Substring(0, strlen - 8);
     99                         rstr = String.Concat(ConvertDigit(tmpstr) + "亿", rstr);
    100                         rstr = rstr.Replace("零亿", "亿");
    101                         rstr = rstr.Replace("零万", "");
    102                         rstr = rstr.Replace("零零", "");
    103                         rstr = rstr.Replace("零零", "");
    104                     }
    105             }
    106             strlen = rstr.Length;
    107             if (strlen >= 2)
    108             {
    109                 switch (rstr.Substring(strlen - 2, 2))
    110                 {
    111                     case "佰零": rstr = rstr.Substring(0, strlen - 2) + ""; break;
    112                     case "仟零": rstr = rstr.Substring(0, strlen - 2) + ""; break;
    113                     case "万零": rstr = rstr.Substring(0, strlen - 2) + ""; break;
    114                     case "亿零": rstr = rstr.Substring(0, strlen - 2) + "亿"; break;
    115                 }
    116             }
    117             return rstr;
    118         }
    119 
    120 
    121 
    122         ///
    123         /// 转换数字(小数部分)
    124         ///
    125         /// 需要转换的小数部分数字字符串
    126         /// 转换成中文大写后的字符串
    127         public string ConvertXiaoShu(string str)
    128         {
    129             int strlen = str.Length;
    130             string rstr;
    131             if (strlen == 1)
    132             {
    133                 rstr = ConvertChinese(str) + "";
    134                 return rstr;
    135             }
    136             else
    137             {
    138                 string tmpstr = str.Substring(0, 1);
    139                 rstr = ConvertChinese(tmpstr) + "";
    140                 tmpstr = str.Substring(1, 1);
    141                 rstr += ConvertChinese(tmpstr) + "";
    142                 rstr = rstr.Replace("零分", "");
    143                 rstr = rstr.Replace("零角", "");
    144                 return rstr;
    145             }
    146         }
    147 
    148 
    149         ///
    150         /// 转换数字
    151         ///
    152         /// 转换的字符串(四位以内)
    153         ///
    154         public string ConvertDigit(string str)
    155         {
    156             int strlen = str.Length;
    157             string rstr = "";
    158             switch (strlen)
    159             {
    160                 case 1: rstr = ConvertChinese(str); break;
    161                 case 2: rstr = Convert2Digit(str); break;
    162                 case 3: rstr = Convert3Digit(str); break;
    163                 case 4: rstr = Convert4Digit(str); break;
    164             }
    165             rstr = rstr.Replace("拾零", "");
    166             strlen = rstr.Length;
    167             return rstr;
    168         }
    169 
    170 
    171         ///
    172         /// 转换四位数字
    173         ///
    174         public string Convert4Digit(string str)
    175         {
    176             string str1 = str.Substring(0, 1);
    177             string str2 = str.Substring(1, 1);
    178             string str3 = str.Substring(2, 1);
    179             string str4 = str.Substring(3, 1);
    180             string rstring = "";
    181             rstring += ConvertChinese(str1) + "";
    182             rstring += ConvertChinese(str2) + "";
    183             rstring += ConvertChinese(str3) + "";
    184             rstring += ConvertChinese(str4);
    185             rstring = rstring.Replace("零仟", "");
    186             rstring = rstring.Replace("零佰", "");
    187             rstring = rstring.Replace("零拾", "");
    188             rstring = rstring.Replace("零零", "");
    189             rstring = rstring.Replace("零零", "");
    190             rstring = rstring.Replace("零零", "");
    191             return rstring;
    192         }
    193 
    194         ///
    195         /// 转换三位数字
    196         ///
    197         public string Convert3Digit(string str)
    198         {
    199             string str1 = str.Substring(0, 1);
    200             string str2 = str.Substring(1, 1);
    201             string str3 = str.Substring(2, 1);
    202             string rstring = "";
    203             rstring += ConvertChinese(str1) + "";
    204             rstring += ConvertChinese(str2) + "";
    205             rstring += ConvertChinese(str3);
    206             rstring = rstring.Replace("零佰", "");
    207             rstring = rstring.Replace("零拾", "");
    208             rstring = rstring.Replace("零零", "");
    209             rstring = rstring.Replace("零零", "");
    210             return rstring;
    211         }
    212 
    213 
    214         ///
    215         /// 转换二位数字
    216         ///
    217         public string Convert2Digit(string str)
    218         {
    219             string str1 = str.Substring(0, 1);
    220             string str2 = str.Substring(1, 1);
    221             string rstring = "";
    222             rstring += ConvertChinese(str1) + "";
    223             rstring += ConvertChinese(str2);
    224             rstring = rstring.Replace("零拾", "");
    225             rstring = rstring.Replace("零零", "");
    226             return rstring;
    227         }
    228 
    229 
    230         ///
    231         /// 将一位数字转换成中文大写数字
    232         ///
    233         public string ConvertChinese(string str)
    234         {
    235             //"零壹贰叁肆伍陆柒捌玖拾佰仟万亿圆整角分"
    236             string cstr = "";
    237             switch (str)
    238             {
    239                 case "0": cstr = ""; break;
    240                 case "1": cstr = ""; break;
    241                 case "2": cstr = ""; break;
    242                 case "3": cstr = ""; break;
    243                 case "4": cstr = ""; break;
    244                 case "5": cstr = ""; break;
    245                 case "6": cstr = ""; break;
    246                 case "7": cstr = ""; break;
    247                 case "8": cstr = ""; break;
    248                 case "9": cstr = ""; break;
    249             }
    250             return (cstr);
    251         }
    252     }
    253 
    254 }

    直接调用ConvertNum()方法传人金额即可。菜鸟的第一篇文章写完了!!!

  • 相关阅读:
    HDU
    HDU
    西电OJ
    西电OJ
    西电OJ
    USACO 2.1-Healthy Holsteins
    USACO 2.1-Sorting a Three-Valued Sequence
    HDU
    UVA
    codeforces 811A Vladik and Courtesy
  • 原文地址:https://www.cnblogs.com/jetjing/p/4261536.html
Copyright © 2011-2022 走看看