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


