CnUpperCaser.java 3.47 KB
package com.rnt.utils;

/**
 * Copyright: Copyright (c) 2017  zteits
 *
 * @ClassName: com.rnt.utils
 * @Description:
 * @version: v1.0.0
 * @author: atao
 * @date: 2017/6/9   上午10:24
 * Modification History:
 * Date         Author          Version      Description
 * ---------------------------------------------------------*
 * 2017/6/9      atao          v1.0.0          创建
 */
public class CnUpperCaser {
    // 整数部分
    private String integerPart;
    // 小数部分
    private String floatPart;

    // 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
    private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};

    // 供分级转化的数组,因为各个实例都要使用所以设为静态
    private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};

    /**
     * 构造函数,通过它将阿拉伯数字形式的字符串传入
     * @param original
     */
    public CnUpperCaser(String original){
        // 成员变量初始化
        integerPart="";
        floatPart="";

        if(original.contains(".")){
            // 如果包含小数点
            int dotIndex=original.indexOf(".");
            integerPart=original.substring(0,dotIndex);
            floatPart=original.substring(dotIndex+1);
        }
        else{
            // 不包含小数点
            integerPart=original;
        }
    }

    /**
     * 取得大写形式的字符串
     * @return
     */
    public String getCnString(){
        // 因为是累加所以用StringBuffer
        StringBuffer sb=new StringBuffer();

        // 整数部分处理
        for(int i=0;i<integerPart.length();i++){
            int number=getNumber(integerPart.charAt(i));

            sb.append(cnNumbers[number]);
            sb.append(series[integerPart.length()-1-i]);
        }

        // 小数部分处理
        if(floatPart.length()>0){
            sb.append("点");
            for(int i=0;i<floatPart.length();i++){
                int number=getNumber(floatPart.charAt(i));

                sb.append(cnNumbers[number]);
            }
        }

        // 返回拼接好的字符串
        return sb.toString();
    }

    /**
     * 将字符形式的数字转化为整形数字
     * 因为所有实例都要用到所以用静态修饰
     * @param c
     * @return
     */
    private static int getNumber(char c){
        String str=String.valueOf(c);
        return Integer.parseInt(str);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new CnUpperCaser("123456789.12345").getCnString());
        System.out.println(new CnUpperCaser("123456789").getCnString());
        System.out.println(new CnUpperCaser(".123456789").getCnString());
        System.out.println(new CnUpperCaser("0.1234").getCnString());
        System.out.println(new CnUpperCaser("1").getCnString());
        System.out.println(new CnUpperCaser("12").getCnString());
        System.out.println(new CnUpperCaser("123").getCnString());
        System.out.println(new CnUpperCaser("1234").getCnString());
        System.out.println(new CnUpperCaser("12345").getCnString());
        System.out.println(new CnUpperCaser("123456").getCnString());
        System.out.println(new CnUpperCaser("1234567").getCnString());
        System.out.println(new CnUpperCaser("12345678").getCnString());
        System.out.println(new CnUpperCaser("123456789").getCnString());
    }
}