将阿拉伯数字转换为中文字工具类:
private static String[] numArray = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
private static String[] unitArray = {"十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千"};
/**
* 阿拉伯数字转中文,包含单位
* 1234:一千二百三十四
*/
private static String toChineseIncludeUnit(String str) {
if(str == null || "".equals(str.trim())){
return "";
}
StringBuffer sb = new StringBuffer();
char[] numChar = str.trim().toCharArray();
int size = numChar.length;
for (int i = 0; i < size; i++) {
int num = Integer.parseInt(String.valueOf(numChar[i]));
if (i != 0) {
sb.append(unitArray[size - i - 1] + numArray[num]);
}else {
sb.append(numArray[num]);
}
}
return sb.toString().replaceAll("零[千百十]", "零").replaceAll("零+万", "万")
.replaceAll("零+亿", "亿").replaceAll("亿万", "亿零")
.replaceAll("零+", "零").replaceAll("零$", "");
}
/**
* 阿拉伯数字转中文,不包含单位
* 10023:一零零二三
*/
private static String toChinese(String str) {
StringBuffer sb = new StringBuffer();
for (char c : str.toCharArray()) {
sb.append(numArray[Integer.parseInt(String.valueOf(c))]);
}
return sb.toString();
}
测试:
System.out.println(toChineseIncludeUnit("520001"));//五十二万零一
System.out.println(toChinese("520001"));//五二零零零一