Java 怎么把大写金额挨个截取出来!?

作者站长头像
站长
· 阅读数 5

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 "参数非法!";
        }
    }
回复
1个回答
avatar
test
2024-06-25

answer image看下我这结果是不是你要的

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);
    }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容