package com.zuidaima.test;

import java.util.HashMap;

public class dataChangZh1 {
	/**
     * 人民币大写单位制
     */
    private static HashMap<Integer, String> dws;
    /**
     * 数字对应的中文
     */
    private static String[] jes;
    // 初始化执行
    static{
        dws = new HashMap<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 = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    }
    /**
     * 数字转换人民币大写
     * @param number 数字 不支持科学数字
     * @return
     */
    public static String chinese(String number){
        StringBuffer su = new StringBuffer();
        // 整数部分
        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 (int i = 0; i < str.length() ; i++) {
                String context = str.substring(i, i+1);
                int pow = 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 = "";
                        }
                    }else if(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("整");
        }
        return su.toString();
    }
    /**
     * 清理数字特殊字符
     * @param str
     * @return
     */
    private static String delInvalidZero(String str){
        if("0".equals(str.substring(0, 1))){
            return delInvalidZero(str.substring(1, str.length()));
        }else if(str.contains(",")){
            return delInvalidZero(str.replaceAll(",", ""));
        }else{
            return str;
        }
    }
    public static void main(String[] args) {
        System.out.println(chinese("1234.56"));
    }
}
最近下载更多
crosa_Don  LV18 2022年7月19日
skipple3  LV39 2019年8月29日
Args_zhw  LV3 2019年1月16日
fenghuijun  LV26 2016年1月24日
kong.yee  LV40 2015年11月3日
匡兴(秀泽)  LV28 2015年3月30日
已注销用户  LV34 2015年1月7日
watfgzs  LV21 2014年11月16日
JAVA_菜菜  LV15 2014年6月11日
xxx  LV11 2014年5月17日
最近浏览更多
fesfefe  LV13 2023年11月11日
EFWAGGFAWGR 2023年10月19日
暂无贡献等级
yuanmafx  LV4 2022年9月14日
crosa_Don  LV18 2022年7月19日
ls2008  LV15 2022年6月22日
123q45  LV1 2021年8月5日
xwq1234567  LV1 2021年6月15日
碰运气的绅士  LV1 2021年5月16日
lkcarry 2021年4月16日
暂无贡献等级
Gyq灬ming  LV11 2020年6月22日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友