java实现人民币数字转换成中文

来源:互联网 发布:mac dashboard是什么 编辑:程序博客网 时间:2024/06/06 02:17
publicclass test {
    /**
     * 人民币大写单位制
     */
    privatestatic HashMap<Integer, String> dws;
    /**
     * 数字对应的中文
     */
    privatestatic String[] jes;
    // 初始化执行
    static{
        dws = newHashMap<Integer, String>();
        dws.put(-2,"分");
        dws.put(-1,"角");
        dws.put(0,"元");
        dws.put(1,"拾");
        dws.put(2,"佰");
        dws.put(3,"仟");
        dws.put(4,"万");//
        dws.put(5,"拾");
        dws.put(6,"佰");
        dws.put(7,"仟");
        dws.put(8,"亿");//
        dws.put(9,"拾");
        dws.put(10,"佰");
        dws.put(11,"仟");
        dws.put(12,"万");
        jes = newString[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    }
    /**
     * 数字转换人民币大写
     * @param number 数字 不支持科学数字
     * @return
     */
    publicstatic String chinese(String number){
        StringBuffer su = newStringBuffer();
        // 整数部分
        number = delInvalidZero(number);
        String str = null;
        // 小数部分
        String decimal = null;
        if(number.contains(".")){
            // 截取整数位
            str = number.split("\\.")[0];
            decimal = number.split("\\.")[1];
        }else{
            str = number;
        }
        // 判断是否存在整数位
        if(str.length()>0){
            for(inti = 0; i < str.length() ; i++) {
                String context = str.substring(i, i+1);
                intpow = str.length()-i-1;
                Integer val = Integer.parseInt(context.toString());
                // 获取中文单位
                String sign = dws.get(pow);
                // 获取中文数字
                String name = jes[Integer.parseInt(context)];
                if(val==0){
                    if(pow%4!=0){// 删除单位
                        sign = "";
                    }
                    if(i < str.length()-1){
                        Integer val1 = Integer.parseInt(str.substring(i+1, i+2));
                        if(val==0&&val==val1){
                            name = "";
                        }
                    }elseif(i == str.length()-1){
                        name = "";
                    }
                }
                su.append(name+sign);
            }
        }
        // 判断是否存在小数位
        if(decimal!=null){
            str = decimal.substring(0,1);
            if(!"0".equals(str)){
                su.append(jes[Integer.parseInt(str)]+dws.get(-1));
            }
            if(decimal.length()==2){
                str = decimal.substring(1,2);
                if(!"0".equals(str)){
                    su.append(jes[Integer.parseInt(str)]+dws.get(-2));
                }
            }
        }else{
            su.append("整");
        }
        returnsu.toString();
    }
    /**
     * 清理数字特殊字符
     * @param str
     * @return
     */
    privatestatic String delInvalidZero(String str){
        if("0".equals(str.substring(0,1))){
            returndelInvalidZero(str.substring(1, str.length()));
        }elseif(str.contains(",")){
            returndelInvalidZero(str.replaceAll(",",""));
        }else{
            returnstr;
        }
    }
    publicstatic void main(String[] args) {
        System.out.println(test.chinese("12.5"));
    }
}
阅读全文
0 0
原创粉丝点击