public class ParseMoney { static final String[] item = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; static final String number[] = { "元", "拾", "佰", "仟", "万", "拾", "百", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟","万","拾","百","千" }; static final String[] sec = { "角", "分" }; /** * 判断是否为有效金额 * * @param item * @return */ boolean isRight(String item) { if (item.charAt(0) == '0' || item.charAt(0) == '.') { return false; } char[] c = item.toCharArray(); int count = 0; for (int index = 1; index < item.length(); index++) { if (c[index] == '.') { count++; continue; } if (c[index] < '0' || c[index] > '9') { return false; } } if (count > 1) { return false; } return true; } String parseToMoney(String money) { StringBuilder sbd = new StringBuilder(); if (!isRight(money)) { return ""; } int index = money.indexOf('.'); String first = (index == -1) ? money : money.substring(0, index); String second = (index == -1) ? "" : money.substring(index + 1, money .length()); char[] firstItem = first.toCharArray(); for (int i = 0, len = firstItem.length; i < len; i++) { int size = sbd.toString().length(); int itemIndex = Integer.parseInt(firstItem[i] + ""); if (i > 0 && i < len - 1 && firstItem[i] == '0') { if ((number[len - i - 1] == "亿")) { sbd.append(number[len - i - 1]); } if ((number[len - i - 1] == "万")) { if (sbd.toString().charAt(size - 1) != '亿') { sbd.append(number[len - i - 1]); } } else if (firstItem[i + 1] != '0') { sbd.append("零"); } } else if (i == len - 1 && firstItem[i] == '0') { sbd.append(number[len - i - 1]); } else { sbd.append(item[itemIndex]); sbd.append(number[len - i - 1]); } } if (second != "") { sbd.append("零"); for (int y = 0; y < second.length(); y++) { int itemIndex = Integer.parseInt(second.charAt(y) + ""); if (itemIndex != 0) { sbd.append(item[itemIndex]); sbd.append(sec[y]); } } } return sbd.toString(); } public static void main(String[] args) { System.out.println(new ParseMoney().parseToMoney("188292300003.34")); System.out.println(new ParseMoney().parseToMoney("161010211.34")); System.out.println(new ParseMoney().parseToMoney("100000011.89")); System.out.println(new ParseMoney().parseToMoney("10000000.12")); System.out.println(new ParseMoney().parseToMoney("1000000102301.78")); System.out.println(new ParseMoney().parseToMoney("9867867000123.78")); } }


dapeng0011 LV15
2024年7月18日
fesfefe LV13
2023年11月11日
多吃多占 LV12
2023年10月20日
jinbaotest LV1
2023年4月13日
xingxing1234 LV10
2023年3月22日
crosa_Don LV18
2022年7月6日
123q45 LV1
2021年8月5日
mm2013 LV5
2021年7月16日
jkchen1 LV6
2020年6月5日
hfk2020 LV2
2020年5月22日