1. 程式人生 > >人民幣數字金額轉大寫金額

人民幣數字金額轉大寫金額

print ringbuf 0.11 println unit sta 大寫 pre main

public class t {
	public static String Trans2RMB(String money) {
		int index = money.indexOf(".");
		if (index < 0) {// 沒有角分
			money = money + ".00";
			index = money.indexOf(".");
		}
		if (money.substring(index, money.length()).length() < 3) {// 沒有分
			money = money + "0";
			index = money.indexOf(".");
		}
		money = money.replaceAll("\\D", "");// 去除"."
		int length = money.length();
		// 貨幣大寫形式
		String bigLetter[] = { "零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖" };
		// 貨幣單位
		String unit[] = { "仟", "佰", "拾", "萬", "仟", "佰", "拾", "億", "仟", "佰",
				"拾", "萬", "仟", "佰", "拾", "元", "角", "分" };
		StringBuffer buf = new StringBuffer("");
		for (int i = 0; i < length; i++) {
			int num = Integer.parseInt(String.valueOf(money.charAt(i)));
			buf.append(bigLetter[num]);
			buf.append(unit[unit.length - money.length() + i]);
		}
		String moneyTmp = buf.toString();
		buf = null;
		for (int i = 0; i < 4; i++) {
			// 億 萬 元是四個為單元的最後一位比如1234(億)4567(萬)7891(元)
			moneyTmp = moneyTmp.replaceAll("零億", "億");
			moneyTmp = moneyTmp.replaceAll("零萬", "萬");
			moneyTmp = moneyTmp.replaceAll("零仟", "零");
			moneyTmp = moneyTmp.replaceAll("零佰", "零");
			moneyTmp = moneyTmp.replaceAll("零拾", "零");
			moneyTmp = moneyTmp.replaceAll("零元", "元");
			moneyTmp = moneyTmp.replaceAll("零角", "零");
			moneyTmp = moneyTmp.replaceAll("零分", "整");
		}
		moneyTmp = moneyTmp.replaceAll("億萬", "億");
		moneyTmp = moneyTmp.replaceAll("拾元", "拾元零");
		moneyTmp = moneyTmp.replaceAll("[零]{1,}", "零");// 多個連續的零替換為一個零
		moneyTmp = moneyTmp.replaceAll("零整", "整");
		return moneyTmp;
	}

	public static void main(String[] args) {
		String money;
		money = "230067890080.01";
		System.out.println(Trans2RMB(money));
		money = "230067890080.11";
		System.out.println(Trans2RMB(money));
		money = "230067890080.10";
		System.out.println(Trans2RMB(money));

		money = "230067890081.01";
		System.out.println(Trans2RMB(money));
		money = "230067890081.11";
		System.out.println(Trans2RMB(money));
		money = "230067890081.10";
		System.out.println(Trans2RMB(money));

		money = "230067890080.01";
		System.out.println(Trans2RMB(money));
		money = "230667890080.01";
		System.out.println(Trans2RMB(money));

		money = "230007890080.01";
		System.out.println(Trans2RMB(money));
		money = "230607890080.01";
		System.out.println(Trans2RMB(money));

		money = "200067890080.01";
		System.out.println(Trans2RMB(money));
		money = "200067890080.11";
		System.out.println(Trans2RMB(money));
		money = "200067890080.10";
		System.out.println(Trans2RMB(money));

		money = "200007890080.01";
		System.out.println(Trans2RMB(money));
		money = "200000890080.11";
		System.out.println(Trans2RMB(money));
		money = "200000090080.10";
		System.out.println(Trans2RMB(money));
		money = "200000000080.10";
		System.out.println(Trans2RMB(money));

		money = "200007890080";
		System.out.println(Trans2RMB(money));
		money = "200000890080.1";
		System.out.println(Trans2RMB(money));

		money = "200607890080.01";
		System.out.println(Trans2RMB(money));
		money = "200600890080.11";
		System.out.println(Trans2RMB(money));
		money = "200600090080.10";
		System.out.println(Trans2RMB(money));
		money = "200600000080.10";
		System.out.println(Trans2RMB(money));

		money = "20007800080.01";
		System.out.println(Trans2RMB(money));
		money = "10001.01";
		System.out.println(Trans2RMB(money));

		// System.out.println(new
		// StringBuffer(Arrays.toString(unit)).reverse());
		// String small[] = { "分", "角" };
		// String[] ss = new String[] { "", "元" };
		// System.out.println(MoneyUtil.Trans2RMB("."));
		// System.out.println(MoneyUtil.Trans2RMB(".0"));
		// System.out.println(MoneyUtil.Trans2RMB("0.0"));
		// System.out.println(MoneyUtil.Trans2RMB("0.00"));
		// System.out.println(MoneyUtil.Trans2RMB("0.000"));
		// System.out.println(MoneyUtil.Trans2RMB("123456789.0"));
		// System.out.println(MoneyUtil.Trans2RMB("1234"));
		// System.out.println(MoneyUtil.Trans2RMB("1111."));
		// System.out.println(MoneyUtil.Trans2RMB("1011.011"));
		// System.out.println(MoneyUtil.Trans2RMB("00012340000000000.011"));
		//
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾元零壹角壹分
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾元零壹角整
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾壹元零壹分
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾壹元壹角壹分
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾壹元壹角整
		// 貳仟叁佰億陸仟柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟叁佰零陸億陸仟柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟叁佰億零柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟叁佰零陸億零柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟億陸仟柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟億陸仟柒佰捌拾玖萬零捌拾元零壹角壹分
		// 貳仟億陸仟柒佰捌拾玖萬零捌拾元零壹角整
		// 貳仟億零柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟億零捌拾玖萬零捌拾元零壹角壹分
		// 貳仟億零玖萬零捌拾元零壹角整
		// 貳仟億零捌拾元零壹角整
		// 貳仟億零柒佰捌拾玖萬零捌拾元整
		// 貳仟億零捌拾玖萬零捌拾元零壹角整
		// 貳仟零陸億零柒佰捌拾玖萬零捌拾元零壹分
		// 貳仟零陸億零捌拾玖萬零捌拾元零壹角壹分
		// 貳仟零陸億零玖萬零捌拾元零壹角整
		// 貳仟零陸億零捌拾元零壹角整
		// 貳佰億零柒佰捌拾萬零捌拾元零壹分
	}

}

人民幣數字金額轉大寫金額