數字轉換成中文漢字數字
阿新 • • 發佈:2019-02-03
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)); } }