金额 中文大写表示 转换方法
/*** * 金额 中文大写表示 转换方法, * * @param input * 金额的字符串形式 * @return */ public static String convertCurrency(String input, String currency) throws Exception { String s1 = "零壹贰叁肆伍陆柒捌玖"; String s4 = "分角整元拾佰仟万拾佰仟亿拾佰仟"; String temp = ""; String result = ""; if (input == null) { input = "0"; } else if (input.indexOf('-') == 0) { input = input.replaceAll("-", ""); } temp = input.trim(); float f = Float.parseFloat(temp); int len = 0; if (temp.indexOf(".") == -1) len = temp.length(); else len = temp.indexOf("."); if (len > s4.length() - 3) return ("输入字串最大只能精确到仟亿,小数点只能两位!"); int n1, n2 = 0; String num = ""; String unit = ""; for (int i = 0; i < temp.length(); i++) { if (i > len + 2) { break; } if (i == len) { continue; } n1 = Integer.parseInt(String.valueOf(temp.charAt(i))); num = s1.substring(n1, n1 + 1); n1 = len - i + 2; unit = s4.substring(n1, n1 + 1); result = result.concat(num).concat(unit); } if ((len == temp.length()) || (len == temp.length() - 1)) result = result.concat("整"); if (len == temp.length() - 2) result = result.concat("零分"); String regex1[] = { "零仟", "零佰", "零拾" }; String regex2[] = { "零亿", "零万", "零元" }; String regex3[] = { "亿", "万", "元" }; String regex4[] = { "零角", "零分" }; // 第一轮转换把 "零仟", 零佰","零拾"等字符串替换成一个"零" for (int i = 0; i < 3; i++) { result = result.replaceAll(regex1[i], "零"); } // 第二轮转换考虑 "零亿","零万","零元"等情况 // "亿","万","元"这些单位有些情况是不能省的,需要保留下来 for (int i = 0; i < 3; i++) { // 当第一轮转换过后有可能有很多个零叠在一起 // 要把很多个重复的零变成一个零 result = result.replaceAll("零零零", "零"); result = result.replaceAll("零零", "零"); result = result.replaceAll(regex2[i], regex3[i]); } // 第三轮转换把"零角","零分"字符串省略 for (int i = 0; i < 2; i++) { result = result.replaceAll(regex4[i], ""); } // 对整数部分为零的处理 if (result.length() > 1 && result.indexOf("元") == 0) { result = result.substring(1); } else if (result.equals("元")) { result = "零元"; } return currency + result; }
?