1. 程式人生 > >數字轉換成中文漢字數字

數字轉換成中文漢字數字

public class Test2 {


	private static final String[] UNITS = { "", "十", "百", "千", "萬", "十", "百", "千", "億", "十", "百", "千", };
	private static final String[] NUMS = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", };
 
	/** 
	 *  數字轉換成中文漢字 
	 *  @param value 要轉換的數字 
	 *  @return 返回數字轉後的漢字字串 
	 */
	public static String number2Chinese(int value) {
 
		String result = ""; //轉譯結果 
 
		for (int i = String.valueOf(value).length() - 1; i >= 0; i--) {//String.valueOf(value) 轉換成String型得到其長度 並排除個位,因為個位不需要單位
			int r = (int) (value / Math.pow(10, i));//value / Math.pow(10, i) 截位匹配單位 
			result += NUMS[r % 10] + UNITS[i];
		}
 
		result = result.replaceAll("零[十, 百, 千]", "零");//匹配字串中的 "零[十, 百, 千]" 替換為 "零"
		result = result.replaceAll("零+", "零");//匹配字串中的1或多個 "零" 替換為 "零"
		result = result.replaceAll("零([萬, 億])", "$1");
		result = result.replaceAll("億萬", "億"); //億萬位拼接時發生的特殊情況
 
		if (result.startsWith("一十")) { //判斷是否以 "一十" 開頭 如果是擷取第一個字元
			result = result.substring(1);
		}
 
		if (result.endsWith("零")) { //判斷是否以 "零" 結尾 如果是擷取除 "零" 外的字元
			result = result.substring(0, result.length() - 1);
		}
 
		return result;
	}
 
	public static void main(String[] args) {
		System.out.println(Test2.number2Chinese(2139567804));
	}




}
private static final String[] UNITS = { "", "十", "百", "千", "萬", "十", "百", "千", "億", "十", "百", "千", }; private static final String[] NUMS = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", };   /**  *  數字轉換成中文漢字  *  @param value 要轉換的數字  *  @return 返回數字轉後的漢字字串  */ public static String number2Chinese(int value) {   String result = ""; //轉譯結果    for (int i = String.valueOf(value).length() - 1; i >= 0; i--) {//String.valueOf(value) 轉換成String型得到其長度 並排除個位,因為個位不需要單位 int r = (int) (value / Math.pow(10, i));//value / Math.pow(10, i) 截位匹配單位  result += NUMS[r % 10] + UNITS[i]; }   result = result.replaceAll("零[十, 百, 千]", "零");//匹配字串中的 "零[十, 百, 千]" 替換為 "零" result = result.replaceAll("零+", "零");//匹配字串中的1或多個 "零" 替換為 "零" result = result.replaceAll("零([萬, 億])", "$1"); result = result.replaceAll("億萬", "億"); //億萬位拼接時發生的特殊情況   if (result.startsWith("一十")) { //判斷是否以 "一十" 開頭 如果是擷取第一個字元 result = result.substring(1); }   if (result.endsWith("零")) { //判斷是否以 "零" 結尾 如果是擷取除 "零" 外的字元 result = result.substring(0, result.length() - 1); }   return result; }   public static void main(String[] args) { System.out.println(Test2.number2Chinese(2139567804)); } }