将小写金额转换成大写金额
例如:110.00转换后为 壹佰壹拾圆整
代码如下

/**
     * 将小写金额转换为大写
     * 
     * @param amount
     *            110.00
     * @return 壹佰壹拾圆整
     */
    public static String amountToUpper(String amount) throws Exception {
        // String[] lowerAmount = { "0", "1", "2", "3", "4", "5", "6", "7", "8",
        // "9" };
        String[] upperAmount = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌",
                "玖" };
        String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "萬", "亿" };
        String wholeUnit = "整";
        StringBuffer result = new StringBuffer();

        if (StringUtil.isEmpty(amount)) { return ""; }
        // 为0
        if (Double.valueOf(amount) == 0) { return upperAmount[0]; }
        // 去掉开头和结尾的0
        amount = amount.replaceAll("^0*", "");
        if (amount.startsWith(".")) {
            amount = "0" + amount;
        }
        if (amount.indexOf(".") > -1) {
            amount = amount.replaceAll("0*$|\\.0{1,2}$", "");
        }
        // 判断格式
        Pattern p = Pattern.compile("\\d{1,12}(\\.\\d{1,2})?");
        Matcher m = p.matcher(amount);
        if (!m.matches()) { throw new Exception("金额格式不正确! "); }
        // 分成整数和小数分别读
        String whole = "";
        String integral = "";
        if (amount.indexOf(".") > -1) {
            whole = amount.split("\\.")[0];
            integral = amount.split("\\.")[1];
        } else {
            whole = amount;
        }
        // 整数读法
        StringBuffer sceAmount = new StringBuffer(whole);
        if (sceAmount.length() > 4) { // 每4位用逗号分隔
            int count = sceAmount.length() / 4;
            for (int i = 0; i <= count; i++) {
                if (i == 1) {
                    sceAmount.insert(sceAmount.length() - 4 * i, ",");
                } else if (i > 1) {
                    sceAmount.insert(sceAmount.length() - 4 * i - 1, ",");
                }
            }
        }
        String[] sce = sceAmount.toString().split(",");
        for (int i = sce.length - 1; i >= 0; i--) { // 每4位循环读
            StringBuffer oneComma = new StringBuffer();
            if (Pattern.compile("\\d{1,4}").matcher(sce[i]).matches()) {
                if (Pattern.compile("[1-9]{4}").matcher(sce[i]).matches()) { // 不含有0
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("0{1}[1-9]{1}0{1}[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[0])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("0{1,3}[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[0]).append(upperAmount[e]);
                } else if (Pattern  .compile("0{1,2}[1-9]{1}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[d])
                            .append(unit[3]);
                } else if (Pattern  .compile("0{1}[1-9]{1}0{2}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[h])
                            .append(unit[4]);
                } else if (Pattern  .compile("[1-9]{1}0{3}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    oneComma.append(upperAmount[t]).append(unit[5]);
                } else if (Pattern  .compile("[1-9]{2}0{2}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[h])
                            .append(unit[4]);
                } else if (Pattern  .compile("[1-9]{1}0{1}[1-9]{1}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[0])
                            .append(upperAmount[d])
                            .append(unit[3]);
                } else if (Pattern  .compile("[1-9]{1}0{2}[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[0])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("0{1}[1-9]{2}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3]);
                } else if (Pattern  .compile("0{1,2}[1-9]{2}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{3}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3]);
                } else if (Pattern  .compile("[1-9]{2}0{1}[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[0])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("0{1}[1-9]{3}")
                                    .matcher(sce[i])
                                    .matches()) { // 四位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[0])
                            .append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{1}0{1}[1-9]{2}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int t = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 千位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(3))); // 个位
                    oneComma.append(upperAmount[t])
                            .append(unit[5])
                            .append(upperAmount[0])
                            .append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{3}")
                                    .matcher(sce[i])
                                    .matches()) { // 三位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 个位
                    oneComma.append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{1}0{2}")
                                    .matcher(sce[i])
                                    .matches()) { // 三位
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 百位
                    oneComma.append(upperAmount[h]).append(unit[4]);
                } else if (Pattern  .compile("[1-9]{1}0{1}[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 百位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(2))); // 个位
                    oneComma.append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[0])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{2}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int h = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 百位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 十位
                    oneComma.append(upperAmount[h])
                            .append(unit[4])
                            .append(upperAmount[d])
                            .append(unit[3]);
                } else if (Pattern  .compile("[1-9]{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 个位
                    oneComma.append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{2}")
                                    .matcher(sce[i])
                                    .matches()) { // 两位
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 十位
                    int e = Integer.valueOf(String.valueOf(sce[i].charAt(1))); // 个位
                    oneComma.append(upperAmount[d])
                            .append(unit[3])
                            .append(upperAmount[e]);
                } else if (Pattern  .compile("[1-9]{1}0{1}")
                                    .matcher(sce[i])
                                    .matches()) {
                    int d = Integer.valueOf(String.valueOf(sce[i].charAt(0))); // 十位
                    oneComma.append(upperAmount[d]).append(unit[3]);
                }
            }
            if (sce.length == 3) {
                if (i == 2) {
                    result.insert(0, oneComma.toString()).append(unit[2]);
                } else if (i == 1) {// 有一个逗号(包含万位单位)
                    oneComma.append(unit[6]);
                    result.insert(0, oneComma.toString());
                } else if (i == 0) { // 有两个逗号(包含亿位单位)
                    oneComma.append(unit[7]);
                    result.insert(0, oneComma.toString());
                }
            } else if (sce.length == 2) {
                if (i == 1) {
                    result.insert(0, oneComma.toString()).append(unit[2]);
                } else if (i == 0) {// 有一个逗号(包含万位单位)
                    oneComma.append(unit[6]);
                    result.insert(0, oneComma.toString());
                }
            } else if (sce.length == 1) {// 没有逗号,最大单位为千
                result.insert(0, oneComma.toString()).append(unit[2]);
            }
        }
        // 小数读法
        if (integral.length() == 1) { // 只带角
            result  .append(upperAmount[0])
                    .append(upperAmount[Integer.valueOf(integral)])
                    .append(unit[1]);
        } else if (integral.length() == 2) {
            if (!integral.startsWith("0")) {// 有角有分
                result  .append(upperAmount[0])
                        .append(upperAmount[Integer.valueOf(String.valueOf(integral.charAt(0)))])
                        .append(unit[1])
                        .append(upperAmount[Integer.valueOf(String.valueOf(integral.charAt(1)))])
                        .append(unit[0]);
            } else {// 只有分
                result  .append(upperAmount[0])
                        .append(upperAmount[Integer.valueOf(String.valueOf(integral.charAt(1)))])
                        .append(unit[0]);
            }
        } else if (integral.equals("")) {
            result.append(wholeUnit);
        }
        return result.toString();
    }