zoukankan      html  css  js  c++  java
  • 金额阿拉伯数字转换为中文大写

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下。

    第一种方法相对复杂

    private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";
    private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";

     1   public static String GetCnString(String MoneyString) //传入数字
     2         {
     3             String[] tmpString = MoneyString.Split('.');
     4             String intString = MoneyString;   // 默认为整数
     5             String decString = "";            // 保存小数部分字串
     6             String rmbCapital = "";            // 保存中文大写字串
     7             int k;
     8             int j;
     9             int n;
    10 
    11             if (tmpString.Length > 1)
    12             {
    13                 intString = tmpString[0];             // 取整数部分
    14                 decString = tmpString[1];             // 取小数部分
    15             }
    16             decString += "00";
    17             decString = decString.Substring(0, 2);   // 保留两位小数位
    18             intString += decString;
    19 
    20             try
    21             {
    22                 k = intString.Length - 1;
    23                 if (k > 0 && k < 18)
    24                 {
    25                     for (int i = 0; i <= k; i++)
    26                     {
    27                         j = (int)intString[i] - 48;
    28                         // rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];     // 供调试用的直接转换
    29                         n = i + 1 >= k ? (int)intString[k] - 48 : (int)intString[i + 1] - 48; // 等效于 if( ){ }else{ }
    30                         if (j == 0)
    31                         {
    32                             if (k - i == 2 || k - i == 6 || k - i == 10 || k - i == 14)
    33                             {
    34                                 rmbCapital += cnUnit[k - i];
    35                             }
    36                             else
    37                             {
    38                                 if (n != 0)
    39                                 {
    40                                     rmbCapital += cnNumber[j];
    41                                 }
    42                             }
    43                         }
    44                         else
    45                         {
    46                             rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k - i];
    47                         }
    48                     }
    49 
    50                     rmbCapital = rmbCapital.Replace("兆亿万", "");
    51                     rmbCapital = rmbCapital.Replace("兆亿", "");
    52                     rmbCapital = rmbCapital.Replace("亿万", "亿");
    53                     rmbCapital = rmbCapital.TrimStart('');
    54                     rmbCapital = rmbCapital.TrimStart('');
    55 
    56                     return rmbCapital;
    57                 }
    58                 else
    59                 {
    60                     return "";   // 超出转换范围时,返回零长字串
    61                 }
    62             }
    63             catch
    64             {
    65                 return "";   // 含有非数值字符时,返回零长字串
    66             }
    67         }
    68  
    View Code

    这里使用另一种方法,使用正则表达式,去匹配数字,这个看着比较简单,可以试试

     1        public string DaXie(string money)
     2         {
     3             try
     4             {
     5                 string s = double.Parse(money).ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
     6                 string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[.]|$))))", "${b}${z}");
     7                 return Regex.Replace(d, ".", delegate(Match m) { return "负圆空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
     8             }
     9             catch (Exception ex)
    10             {
    11                 ClassAppLogs.WriteLogToLocalTextstatic(ex);
    12                 return "";
    13             }
    14         }
    正则表达式匹配

    以下是去查到的,觉得不错,还是有点复杂

    http://www.cnblogs.com/jsping/archive/2012/07/25/2607772.html

    http://blog.csdn.net/lwjnumber/article/details/7037083

  • 相关阅读:
    Excel基础—文件菜单之创建保存
    Excel技巧—名称框的妙用
    Excel基础—文件菜单之设置信息
    Excel基础—文件菜单之打印共享账户
    Excel基础—文件菜单之设置选项
    Excel基础—工作界面概述
    linux环境下pathinfo 工作失败的改进函数
    javascript为网页元素绑定click事件
    将纯真ip数据库解析并导入mysql数据库中
    pgsql导入和导出数据
  • 原文地址:https://www.cnblogs.com/luoqin520/p/5938042.html
Copyright © 2011-2022 走看看