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日

