java将金额转化为大写金额

15410年前 (2015-09-30)java技术3770

 private static String[] num = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 

    // 10进制单位 

    private static String[] dw = {"","拾","佰","仟"}; 

     // 数值进度单位参考 http://www.douban.com/group/topic/5404723/  http://zhidao.baidu.com/question/51925487.html 
     // 1000进制单位 

     private static String[] dw2 = {"","萬","億","兆","京","垓","杼","穰","溝","澗","正","載","極","恆河沙","阿僧祇","那由他","不可思議","无量","大数"}; 

     private static String[] dw1 = {"角","分"}; 

     public static void main(String[] args) { 

         String test = "009900990000"; 

         System.out.println(parse(test)); 

     } 

      

     private static String parse(String str) { 

//      str = str.replaceAll("^(0+)(.*)", "$2").replaceAll("(.*?)(0+)$", "$1"); 

//      if(str.indexOf(".") == 0) { 

//          str = "0"+str; 

//      } 

         // 判断是否为合格数字 

         if(str.matches("^\\d+(\\.\\d+)?\\d*$")) { 

             String integer = ""; 

             String decimal = ""; 

             // 拆分成整数和小数部分 

             int pos = str.indexOf("."); 

             if(pos >=0 ) { 

                 integer = str.substring(0,pos); 

                 decimal = str.substring(pos+1); 

                 decimal = decimal.replaceAll("(.*?)(0+)$", "$1"); 

                   

             } else { 

                 integer = str; 

             } 

             integer = integer.replaceAll("^(0+)(.*)", "$2"); 

            if(integer.isEmpty() && !decimal.isEmpty()) { 

                 integer = "0"; 

             } 

             // 解析整数字符串 

             String intStr =  parseIntger(integer); 

             // 解析小数字符串 

             String decimalStr = parseDecimal(decimal,!intStr.isEmpty()); 

             if(!intStr.isEmpty()) { 

                 intStr += "元"; 

                 if(integer.endsWith("0") && !decimal.isEmpty() && !decimal.startsWith("0")){ 

                     intStr+="零"; 

                 } 

             } else if(decimalStr.isEmpty()) { 

                 intStr = "零元"; 

             } 

             return intStr + (decimalStr.isEmpty()?"整":decimalStr); 

         } 

         throw new IllegalArgumentException(str); 

     } 

       

     /** 

      * 解析整数 规则为: 

      *  将字符串从后往前分割成四个字符一组的字符串二维数组(对应1000进制单位) 

      *  分别解析每个数组为10进制单位中对应的字符串 

      *  合并到一起则为整个字符串 

      * @param str 

      * @return 

      */

     private static String parseIntger(String str) { 

         if(null == str || str.isEmpty()) { 

             return ""; 

         } 

         // 分割字符串为四个字符一组的字符串二维数组  

本文原创,转载必追究版权。

分享给朋友:

相关文章

js限制input只能输入数字、英文、汉字

 1.只能输入数字和英文的:  <input onkeyup="value=value.replace(/[\W]/g,'') "...

freemarker 判断日期变量为空处理 及InvalidReferenceException异常处理

at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98);InvalidR...

MyEclipse 10安装svn

MyEclipse 10安装svn

 方法一:在线安装(推荐)1.打开HELP->MyEclipse ConfigurationCenter。切换到SoftWare标签页。 2.点击Add Site 打开对话框...

开机密码忘记怎么办

1、重新启动计算机,在启动画面出现后马上按下F8键(不同类型型号电脑启动键不一样,参考附加),选择“带命令行的安全模式”。2、运行过程结束时,系统列出了系统超级用户“administrator”和本地...

竟然可以这样打扮!女人呆了!男人痴了!

来个轻松点的哇,惊呆了,肯定贵不了,立刻去瞅瞅...

谈话让别人舒服的程度,决定你成功的高度

谈话让别人舒服的程度,决定你成功的高度

职场上,有这样两种截然相反的人:有人生怕别人舒服,尽量让别人不舒服,而只要自己舒服就行;还有一类人生怕别人不舒服,尽量让别人舒服,哪怕委屈自己。猎头公司猎聘的老总有几十万年薪的,也有几百万的,甚至有过...

评论列表

点我收录您
10年前 (2015-10-15)

用JS也成 大写在银行业挺重要的

萨瓦迪卡 回复:
对呀,税务行业也需要
10年前 (2015-10-16)
Scoea
Scoea
10年前 (2015-10-16)

有意思

萨瓦迪卡 回复:
[挤眼]
10年前 (2015-10-16)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。