Java 怎么把大写金额挨个截取出来!?
如图,左侧是小写的金额,需求是把小写金额转成大写金额,并且把大写金额拆开,分别填入到右侧表格中,因为这是我后端生成PDF,需要把值写到PDF中去。 我试了好多种截取字符串的方式都行不通,还请各位给指点指点!
这是数字金额转大写金额的方法
public static String changeCH(BigDecimal money) { double v = money.doubleValue();
if (!(v < 0.0D) && !(v > 9.99999999999999E12D)) {
long l = Math.round(v * 100.0D);
if (l == 0L) {
return "零元整";
} else {
String strValue = l + "";
int i = 0;
int j = "万仟佰拾亿仟佰拾万仟佰拾元角分".length() - strValue.length();
String rs = "";
for(boolean isZero = false; i < strValue.length(); ++j) {
char ch = strValue.charAt(i);
if (ch == '0') {
isZero = true;
if ("万仟佰拾亿仟佰拾万仟佰拾元角分".charAt(j) == 20159 || "万仟佰拾亿仟佰拾万仟佰拾元角分".charAt(j) == 19975 || "万仟佰拾亿仟佰拾万仟佰拾元角分".charAt(j) == 20803) {
rs = rs + "万仟佰拾亿仟佰拾万仟佰拾元角分".charAt(j);
isZero = false;
}
} else {
if (isZero) {
rs = rs + "零";
isZero = false;
}
rs = rs + "零壹贰叁肆伍陆柒捌玖".charAt(ch - 48) + "万仟佰拾亿仟佰拾万仟佰拾元角分".charAt(j);
}
++i;
}
if (!rs.endsWith("分")) {
rs = rs + "整";
}
rs = rs.replaceAll("亿万", "亿");
return rs;
}
} else {
return "参数非法!";
}
}
回答:
看下我这结果是不是你要的
public class Main { public static void main(String[] args) {
String bigNumberStr = "零壹贰叁肆伍陆柒捌玖";
String string = "123465456";
double number = new Double(string);
string = String.format("%.2f", number).toString();
string = string.replace(".", "");
String result = "";
for(int i = 0; i < string.length(); i++) {
char ch = string.charAt(i);
int num = Integer.valueOf(String.valueOf(ch));
result = result.concat(String.valueOf(bigNumberStr.charAt(num)));
}
System.out.println(result);
}
}
回答:
import java.math.BigDecimal;import java.util.ArrayList;
import java.util.List;
public class AmountToChinese {
public static void main(String[] args) {
BigDecimal amount = new BigDecimal("156900546.25");
String chineseAmount = changeCH(amount);
List<String> splittedChineseAmount = splitChineseAmount(chineseAmount);
// 打印拆分后的大写金额字符
for (String s : splittedChineseAmount) {
System.out.println(s);
}
}
// 这是你提供的方法
public static String changeCH(BigDecimal money) {
// ... 你的代码 ...
}
public static List<String> splitChineseAmount(String chineseAmount) {
List<String> result = new ArrayList<>();
for (int i = 0; i < chineseAmount.length(); i++) {
result.add(String.valueOf(chineseAmount.charAt(i)));
}
return result;
}
}
以上是 Java 怎么把大写金额挨个截取出来!? 的全部内容, 来源链接: utcz.com/p/945389.html