java方法集:大写金额转换数字
var foo = 'bar';
package demo;
import java.math.BigDecimal;
public class demo3 {
public static String ChineseConvertToNumber(String chineseAmount) {
if (chineseAmount == null || chineseAmount.length() <= 0 || chineseAmount == "") {
return null;
}
chineseAmount = chineseAmount
.replace("元", "")
.replace("圆", "")
.replace("整", "")
.replace("正", "");
char[] wordCharArray = chineseAmount.toCharArray();
BigDecimal numberAmount = BigDecimal.ZERO;
boolean fen = false;
boolean jiao = false;
boolean yuan = false;
boolean shi = false;
boolean bai = false;
boolean qian = false;
boolean wan = false;
boolean yi = false;
for (int i = (wordCharArray.length - 1); i >= 0; i--) {
BigDecimal currentPlaceAmount = BigDecimal.ZERO;
if (wordCharArray[i] == '分') {
fen = true;
continue;
} else if (wordCharArray[i] == '角') {
jiao = true;
continue;
} else if (wordCharArray[i] == '元') {
yuan = true;
continue;
} else if (wordCharArray[i] == '拾') {
shi = true;
continue;
} else if (wordCharArray[i] == '佰') {
bai = true;
continue;
} else if (wordCharArray[i] == '仟') {
qian = true;
continue;
} else if (wordCharArray[i] == '万') {
wan = true;
continue;
} else if (wordCharArray[i] == '亿' || wordCharArray[i] == '億') {
yi = true;
continue;
}
double t = 0;
if (fen) {
t = ConvertNameToSmall(wordCharArray[i]) * 0.01;
} else if (jiao) {
t = ConvertNameToSmall(wordCharArray[i]) * 0.1;
} else if (shi) {
t = ConvertNameToSmall(wordCharArray[i]) * 10;
} else if (bai) {
t = ConvertNameToSmall(wordCharArray[i]) * 100;
} else if (qian) {
t = ConvertNameToSmall(wordCharArray[i]) * 1000;
} else {
t = ConvertNameToSmall(wordCharArray[i]);
}
currentPlaceAmount = new BigDecimal(t);
if (yi) {
currentPlaceAmount = currentPlaceAmount.multiply(new BigDecimal(100000000));
} else if (wan) {
currentPlaceAmount = currentPlaceAmount.multiply(new BigDecimal(10000));
}
numberAmount = numberAmount.add(currentPlaceAmount);
fen = false;
jiao = false;
shi = false;
bai = false;
qian = false;
yuan = false;
}
return numberAmount.setScale(2,BigDecimal.ROUND_HALF_UP).toString();
}
private static int ConvertNameToSmall(char chinese) {
int number = 0;
String s = String.valueOf(chinese);
switch (s) {
case "零":
number = 0;
break;
case "壹":
number = 1;
break;
case "贰":
number = 2;
break;
case "叁":
number = 3;
break;
case "肆":
number = 4;
break;
case "伍":
number = 5;
break;
case "陆":
number = 6;
break;
case "柒":
number = 7;
break;
case "捌":
number = 8;
break;
case "玖":
number = 9;
break;
}
return number;
}
public static void main(String[] args) {
System.out.println("壹亿肆仟万元整元整: 140000000.00 " + ChineseConvertToNumber("壹亿肆仟万元整元整"));
System.out.println("壹万伍仟肆佰壹拾元贰角捌分肆厘 15410.284: " + ChineseConvertToNumber("壹万伍仟肆佰壹拾元贰角捌分肆厘"));
System.out.println("壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分 1234567890.01: " + ChineseConvertToNumber("壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));
System.out.println("贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分 234567890.01: " + ChineseConvertToNumber("贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));
System.out.println("叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分 34567890.01: " + ChineseConvertToNumber("叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));
System.out.println("肆佰伍拾陆万柒仟捌佰玖拾元零壹分 4567890.01: " + ChineseConvertToNumber("肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));
System.out.println("伍拾陆万柒仟捌佰玖拾元零壹分 567890.01: " + ChineseConvertToNumber("伍拾陆万柒仟捌佰玖拾元零壹分"));
System.out.println("陆万柒仟捌佰玖拾元零壹分 67890.01: " + ChineseConvertToNumber("陆万柒仟捌佰玖拾元零壹分"));
System.out.println("柒仟捌佰玖拾元零壹分 7890.01: " + ChineseConvertToNumber("柒仟捌佰玖拾元零壹分"));
System.out.println("捌佰玖拾元零壹分 890.01: " + ChineseConvertToNumber("捌佰玖拾元零壹分"));
System.out.println("玖拾元零壹分 90.01: " + ChineseConvertToNumber("玖拾元零壹分"));
System.out.println("壹元零壹分 1.01: " + ChineseConvertToNumber("壹元零壹分"));
System.out.println("壹元壹角贰分 1.12: " + ChineseConvertToNumber("壹元壹角贰分"));
System.out.println("壹园整 1.00: " + ChineseConvertToNumber("壹园整"));
System.out.println("壹角 0.10: " + ChineseConvertToNumber("壹角"));
System.out.println("贰分 0.02: " + ChineseConvertToNumber("贰分"));
System.out.println("贰分 0.02: " + ChineseConvertToNumber("贰分"));
System.out.println("壹元整 1.00: " + ChineseConvertToNumber("壹元整"));
System.out.println("拾元整 10.00: " + ChineseConvertToNumber("拾元整") + " 错误写法");
System.out.println("壹拾元整 10.00: " + ChineseConvertToNumber("壹拾元整"));
System.out.println("壹佰元整 100.00: " + ChineseConvertToNumber("壹佰元整"));
System.out.println("壹仟元整 1000.00: " + ChineseConvertToNumber("壹仟元整"));
System.out.println("壹万元整 10000.00: " + ChineseConvertToNumber("壹万元整"));
System.out.println("拾万元整 100000.00: " + ChineseConvertToNumber("拾万元整") + " 错误写法");
System.out.println("壹拾万元整 100000.00: " + ChineseConvertToNumber("壹拾万元整"));
System.out.println("壹佰万元整 1000000.00: " + ChineseConvertToNumber("壹佰万元整"));
System.out.println("壹仟万元整 10000000.00: " + ChineseConvertToNumber("壹仟万元整"));
System.out.println("壹亿元整 100000000.00: " + ChineseConvertToNumber("壹亿元整"));
System.out.println("繁体:壹億元整 100000000.00: " + ChineseConvertToNumber("壹億元整"));
System.out.println("壹拾亿元整 1000000000.00: " + ChineseConvertToNumber("壹拾亿元整"));
System.out.println("壹拾亿元壹角贰分 1000000000.12: " + ChineseConvertToNumber("壹拾亿元壹角贰分"));
System.out.println("壹拾亿元壹分 1000000000.01: " + ChineseConvertToNumber("壹拾亿元壹分"));
System.out.println("陆仟零柒元壹角肆分 6007.14: " + ChineseConvertToNumber("陆仟零柒元壹角肆分"));
}
}