金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出

public class RenMingBi {


    /**
     * 中文数字
     */
    private static final char[] DATA = new char[]{
            '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'
    };

    /**
     * 中文货币单位
     */
    private static final char[] UNITS = new char[]{
            '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿'
    };

    public static void main(String[] args) {
        //输出:壹亿叁仟伍佰陆拾捌万玖仟壹佰贰拾叁元
        System.out.println(convert(135689123));
        //输出:不去零 肆亿伍仟贰佰零拾零万肆仟伍佰零拾伍元
        //输出:  去零 肆亿伍仟贰零万肆仟伍零拾伍元
        System.out.println(convert(452004505));
    }

    /**
     * 转换方法
     *
     * @param money 阿拉伯数字金钱数量
     * @return 中文金钱表示
     */
    public static String convert(int money) {
        StringBuilder sb = new StringBuilder();
        int unit = 0;
        while (money != 0) {
            sb.insert(0, UNITS[unit++]);
            int number = money % 10;
            sb.insert(0, DATA[number]);
            money /= 10;
        }

        //return sb.toString();
        //去零的代码:
        String noZero = sb.reverse().toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+万", "万")
                .replaceAll("零+元", "元").replaceAll("零+", "零");
        return new StringBuilder(noZero).reverse().toString();
    }
}

你可能感兴趣的:(金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出)