黑马程序员技术交流社区

标题: 把数字转化成银行用的大写 [打印本页]

作者: 喂,咱不离!    时间: 2013-10-28 23:43
标题: 把数字转化成银行用的大写
public class Digitizer  {
        /*
         * 12345
         * 壹万贰仟叁佰肆拾伍圆
         */
        private static char[] numArr = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
        private static char[] unitArr = {'圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'};
        public static void main(String[] args) {
                System.out.println(toChinese(12345));                        //将数字转换成对应的中文
                System.out.println(toChinese(0));
                System.out.println(toChinese(10000));
                System.out.println(toChinese(1000000001));
        }
        private static String toChinese(int num) {
                StringBuilder sb = new StringBuilder();
                if(num == 0) {
                        return "零圆";
                }
                for(int i = 0; num > 0; i++) {
                        int temp = num % 10;                                        //获取num的每一个数字
                        num = num / 10;                                                        //每获取一位后就将数字去掉一位
                        sb.insert(0,unitArr[i]);                                //向0角标的位置添加单位
                        sb.insert(0, numArr[temp]);                                //向0角标的位置添加数字文字
                }
                return sb.toString()
                                .replaceAll("零[仟佰拾]", "零")
                                .replaceAll("零+", "零")
                                .replaceAll("零([亿万])", "$1")
                                .replace("亿万", "亿")
                                .replace("零圆", "圆");
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2