JAVA练习---人民币小写转大写
2016-03-11 11:57
489 查看
package 测试包; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class 人民币数字转大写 { public static boolean isXiaoShu(String x) { boolean flag = false; Pattern p = Pattern.compile("\\."); Matcher m = p.matcher(x); while (m.find()) { flag = true; } return flag; } // 分解整数和小数 public static ArrayList<String> fenJieZhengshu(String x) { ArrayList<String> ret = new ArrayList<String>(); ArrayList<String> al = new ArrayList<String>(); Pattern p = Pattern.compile("[0-9]+"); Matcher m = p.matcher(x); while (m.find()) { al.add(m.group()); } int zhengshuweishu = al.get(0).length(); if (zhengshuweishu >= 0 && zhengshuweishu <= 4) { ret.add(al.get(0)); } if (zhengshuweishu >= 5 && zhengshuweishu <= 8) { ret.add(al.get(0).substring(0, zhengshuweishu - 4)); ret.add(al.get(0).substring(zhengshuweishu - 4, zhengshuweishu)); } if (zhengshuweishu >= 9 && zhengshuweishu <= 12) { ret.add(al.get(0).substring(0, zhengshuweishu - 8)); ret.add(al.get(0).substring(zhengshuweishu - 8, zhengshuweishu - 4)); ret.add(al.get(0).substring(zhengshuweishu - 4, zhengshuweishu)); } return ret; } public static String fenJieXiaoshu(String x) { String xiaoshu = ""; ArrayList<String> al = new ArrayList<String>(); Pattern p = Pattern.compile("[0-9]+"); Matcher m = p.matcher(x); while (m.find()) { cbe0 al.add(m.group()); } xiaoshu = al.get(1); return xiaoshu; } // 读千,读小数 public static String readQian(String x) { String ret = ""; String daxie = "零一二三四五六七八九十"; String danwei = "个十百千万亿"; StringBuilder sb = new StringBuilder(); for (int i = 0; i < x.length(); i++) { sb.append(daxie.charAt(Integer.parseInt(x.charAt(i) + ""))); sb.append(danwei.charAt(x.length() - i - 1)); } ret = sb.toString(); return ret; } public static String readxiaoshu(String x) { String ret = ""; String daxie = "零一二三四五六七八九十"; ret = daxie.charAt(Integer.parseInt(x.charAt(0) + "")) + "角"; ret = ret + daxie.charAt(Integer.parseInt(x.charAt(1) + "")) + "分"; return ret; } // 统一读法 public static String readMoney(String x) { String ret = ""; StringBuilder sb_temp = new StringBuilder(); ArrayList<String> zheng = fenJieZhengshu(x); if (zheng.size() == 1) { sb_temp.append(readQian(zheng.get(0))); } if (zheng.size() == 2) { sb_temp.append(readQian(zheng.get(0))); sb_temp.append("万"); sb_temp.append(readQian(zheng.get(1))); } if (zheng.size() == 3) { sb_temp.append(readQian(zheng.get(0))); sb_temp.append("亿"); sb_temp.append(readQian(zheng.get(1))); sb_temp.append("万"); sb_temp.append(readQian(zheng.get(2))); } String xiao = ""; if (isXiaoShu(x) == true) { xiao = readxiaoshu(fenJieXiaoshu(x)); sb_temp.append("圆"); sb_temp.append(xiao); ret = "人民币" + sb_temp.toString(); } if (isXiaoShu(x) == false) { ret = "人民币" + sb_temp.toString() + "圆整"; } ret = xiuGai(ret); return ret; } // 修改 public static String xiuGai(String x) { String ret = x; for (int i = 0; i < 2; i++) { ret = ret.replaceAll("零角零分", "整"); ret = ret.replaceAll("零角", "零"); ret = ret.replaceAll("零分", ""); ret = ret.replaceAll("零千零百零十零个亿", ""); ret = ret.replaceAll("零千零百零十零个万", "零"); ret = ret.replaceAll("零千零百零十零个", ""); ret = ret.replaceAll("零百零十零个", ""); ret = ret.replaceAll("零十零个", ""); ret = ret.replaceAll("零个圆", ""); ret = ret.replaceAll("零个", ""); ret = ret.replaceAll("零千零百零十", "零"); ret = ret.replaceAll("零千零百", "零"); ret = ret.replaceAll("零万", "万"); ret = ret.replaceAll("零千", "零"); ret = ret.replaceAll("零百", "零"); ret = ret.replaceAll("零十", "零"); ret = ret.replaceAll("零零", "零"); ret = ret.replaceAll("个", ""); ret = ret.replaceAll("人民币零", "人民币"); ret = ret.replaceAll("人民币亿", "人民币"); ret = ret.replaceAll("", ""); } return ret; } public static void main(String[] args) { System.out.println(readMoney("0.78")); System.out.println(readMoney("10000.00")); System.out.println(readMoney("100110000089.00")); System.out.println(readMoney("100110000089.00")); System.out.println(readMoney("000000089.00")); System.out.println(readMoney("100110000089.00")); System.out.println(readMoney("1000000009.10")); } }
人民币七角八分
人民币一万圆整
人民币一千零一亿一千万零八十九圆整
人民币一千零一亿一千万零八十九圆整
人民币八十九圆整
人民币一千零一亿一千万零八十九圆整
人民币一十亿零九圆一角
相关文章推荐
- JAVA练习---人民币小写转大写
- JAVA练习---人民币小写转大写
- JAVA练习---人民币小写转大写
- JAVA练习---人民币小写转大写
- Myeclipse优化
- Java的calendar类用法
- RxJava之subscribeOn解惑
- Java可变参数传递中可以接收多个对象
- spring(自动检测bean)
- JAVA设置当时时间大小
- Java中正则表达式匹配的语法规则
- java学习第一集:Hello World
- Android eclipse导入项目后出现Unable to resolve target 'android-17'解决方法
- 深入理解Java内存模型之系列篇
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- JAVA线程同步中的notify和wait()函数
- Java中系统属性Properties介绍 System.getProperty()参数大全
- java简单实现webservice接口
- RxJava
- springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定