zoukankan      html  css  js  c++  java
  • C#人民币金额大写转换

    人民币金额大小写转换,三行代码

    //完善了一下查询到的方法,支持小数,保留2位小数

    [csharp] view plain copy
     
    1. public string NumGetStr(double Num)  
    2.       {  
    3.           string[] DX_SZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };//大写数字  
    4.           string[] DX_DW = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };  
    5.           string[] DX_XSDS = { "角", "分" };//大些小数单位  
    6.           if (Num == 0) return DX_SZ[0];  
    7.   
    8.           Boolean IsXS_bool = false;//是否小数  
    9.   
    10.           string NumStr;//整个数字字符串  
    11.           string NumStr_Zs;//整数部分  
    12.           string NumSr_Xs = "";//小数部分  
    13.           string NumStr_R = "";//返回的字符串  
    14.   
    15.   
    16.           NumStr = Num.ToString();  
    17.           NumStr_Zs = NumStr;  
    18.           if (NumStr_Zs.Contains("."))  
    19.           {  
    20.               NumStr = Math.Round(Num, 2).ToString();  
    21.               NumStr_Zs = NumStr.Substring(0, NumStr.IndexOf("."));  
    22.               NumSr_Xs = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));  
    23.               IsXS_bool = true;  
    24.           }  
    25.   
    26.           int k = 0;  
    27.           Boolean IsZeor = false;//整数中间连续0的情况  
    28.           for (int i = 0; i < NumStr_Zs.Length; i++) //整数  
    29.           {  
    30.               int j = int.Parse(NumStr_Zs.Substring(i, 1));  
    31.               if (j != 0)  
    32.               {  
    33.                   NumStr_R += DX_SZ[j] + DX_DW[NumStr_Zs.Length - i - 1];  
    34.                   IsZeor = false; //没有连续0  
    35.               }  
    36.               else if (j == 0)  
    37.               {  
    38.                   k++;  
    39.                   if (!IsZeor && !(NumStr_Zs.Length == i + 1)) //等于0不是最后一位,连续0取一次  
    40.                   {  
    41.                       //有问题  
    42.                       if (NumStr_Zs.Length - i - 1 >= 4 && NumStr_Zs.Length - i - 1<=6)  
    43.                           NumStr_R += DX_DW[4] + "零";  
    44.                       else  
    45.                           if (NumStr_Zs.Length - i - 1 > 7)  
    46.                               NumStr_R += DX_DW[8] + "零";  
    47.                       else  
    48.                           NumStr_R += "零";  
    49.   
    50.                       IsZeor = true;  
    51.                   }  
    52.   
    53.                   if (NumStr_Zs.Length == i + 1)//  等于0且是最后一位 变成 XX元整  
    54.                       NumStr_R += DX_DW[NumStr_Zs.Length - i - 1];  
    55.               }  
    56.   
    57.           }  
    58.           if (NumStr_Zs.Length>2 && k == NumStr_Zs.Length - 1)   
    59.               NumStr_R = NumStr_R.Remove(NumStr_R.IndexOf('零'), 1); //比如1000,10000元整的情况下 去0  
    60.   
    61.           if (!IsXS_bool) return NumStr_R + "整"; //如果没有小数就返回  
    62.           else  
    63.           {  
    64.               for (int i = 0; i < NumSr_Xs.Length; i++)  
    65.               {  
    66.                   int j = int.Parse(NumSr_Xs.Substring(i, 1));  
    67.                   NumStr_R += DX_SZ[j] + DX_XSDS[NumSr_Xs.Length - i - 1];  
    68.               }  
    69.           }  
    70.   
    71.           return NumStr_R;  
    72.       }  

    2016.6.16更新。

    发现这么一段代码,我整个人都。。 

    [csharp] view plain copy
     
    1. public static String ConvertToChinese(Decimal number)  
    2.        {  
    3.            var s = number.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");  
    4.            var 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}");  
    5.            var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());  
    6.            return r;  
    7.        }  

    上面那么一大段的这几句也可以实现 呵呵.. Interesting

    正则真强大。

  • 相关阅读:
    第三方支付——支付宝支付
    使用Ansible自动配置Nginx服务
    使用Ansible自动配置JDK环境
    mycat 生产环境 cpu 占用 800% 问题 Mycat调优启用useOffHeapForMerge报java.lang.NumberFormatException异常解决(附源码)
    es 备份 恢复
    修改es 副本数 replicas
    Java压缩流GZIPStream导致的内存泄露
    java 堆外内存泄漏 排查
    Linux下查看某一进程所占用内存的方法(转)
    jmap -histo java内存泄漏排查 -XX:MaxDirectMemorySize=2G
  • 原文地址:https://www.cnblogs.com/Jeremy2001/p/7788469.html
Copyright © 2011-2022 走看看