數字轉漢字工具類

public class NumberToChineseUtils {

    private static final char[] RMB_NUMS = "零一二三四五六七八九".toCharArray();
    private static final String[] U1 = {"", "十", "百", "千"};
    private static final String[] U2 = {"", "萬", "億"};

    public static String integer2chinese(Integer integer){
        String str = integer2chinese(String.valueOf(integer));
        if (integer>9 && integer<20){
            str= str.substring(1);
        }
        return str;
    }

    public static String integer2chinese(String integer) {
        StringBuilder buffer = new StringBuilder();
        // 從個位數開始轉換
        int i, j;
        for (i = integer.length() - 1, j = 0; i >= 0; i--, j++) {
            char n = integer.charAt(i);
            if (n == '0') {
                // 當n是0且n的右邊一位不是0時,插入[零]
                if (i < integer.length() - 1 && integer.charAt(i + 1) != '0') {
                    buffer.append(RMB_NUMS[0]);
                }
                // 插入[萬]或者[億]
                if (j % 4 == 0) {
                    if (i > 0 && integer.charAt(i - 1) != '0'
                            || i > 1 && integer.charAt(i - 2) != '0'
                            || i > 2 && integer.charAt(i - 3) != '0') {
                        buffer.append(U2[j / 4]);
                    }
                }
            } else {
                if (j % 4 == 0) {
                    // 插入[萬]或者[億]
                    buffer.append(U2[j / 4]);
                }
                // 插入[拾]、[佰]或[仟]
                buffer.append(U1[j % 4]);
                // 插入數字
                buffer.append(RMB_NUMS[n - '0']);
            }
        }
        return buffer.reverse().toString();
    }

    public static void main(String[] args) {
        System.out.println(integer2chinese(11));
    }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章