自己写的一个金额小写转大写: /** * 小写转换大写金额 * @param sStr */ public static String toUpper(String amount) { StringBuffer result = new StringBuffer(""); String[] tmp = amount.replaceAll(",", "").split("//."); result.append(parseInt(tmp[0])); result.append("元"); if (tmp.length == 2) { result.append(parseFloat(tmp[1])); } return result.toString(); } /** * 解析小数部分 * @param sStr * @return */ public static String parseInt(String sStr) { String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; String[] unit = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" }; String result = ""; final int LEN = sStr.length(); for (int i = 0,j=LEN-1; i < LEN; i++,j--) { String tmp = sStr.substring(i, i + 1); int k = Integer.parseInt(tmp); result += num[k] + unit[j]; } return parseZero(result); } /** * 解析整数部分 * @param sStr */ public static String parseFloat(String sStr) { String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "七", "捌", "玖" }; String[] unit = { "角", "分" }; String result = ""; final int LEN = sStr.length(); for (int i = 0; i < LEN; i++) { String tmp = sStr.substring(i, i + 1); int k = Integer.parseInt(tmp); result += num[k] + unit[i]; } return parseZero(result); } /** * 去掉多余的零 * @param result */ public static String parseZero(String result){ result = result.replace("零拾","零"); result = result.replace("零佰","零") ; result = result.replace("零仟","零") ; result = result.replace("零零零","零"); result = result.replace("零零","零"); result = result.replace("零角零分","整"); result = result.replace("零分","整"); result = result.replace("零角","零"); result = result.replace("零亿零万零元","亿元"); result = result.replace("亿零万零元","亿元"); result = result.replace("零亿零万","亿"); result = result.replace("零万零元","万元"); result = result.replace("万零元","万元"); result = result.replace("零亿","亿"); result = result.replace("零万","万"); result = result.replace("零元","元"); result = result.replace("零零","零"); return result; } public static void main(String[] args) { System.out.print(toUpper("10,010,002.66")); }