public class NumberToChineseUtils {
private static final char[] RMB_NUMS = "零一二三四五六七八九".toCharArray();
private static final String[] U1 = {"", "十", "百", "千"};
private static final String[] U2 = {"", "萬", "億"};
public static String integer2chinese(Integer integer){
String str = integer2chinese(String.valueOf(integer));
if (integer>9 && integer<20){
str= str.substring(1);
}
return str;
}
public static String integer2chinese(String integer) {
StringBuilder buffer = new StringBuilder();
// 從個位數開始轉換
int i, j;
for (i = integer.length() - 1, j = 0; i >= 0; i--, j++) {
char n = integer.charAt(i);
if (n == '0') {
// 當n是0且n的右邊一位不是0時,插入[零]
if (i < integer.length() - 1 && integer.charAt(i + 1) != '0') {
buffer.append(RMB_NUMS[0]);
}
// 插入[萬]或者[億]
if (j % 4 == 0) {
if (i > 0 && integer.charAt(i - 1) != '0'
|| i > 1 && integer.charAt(i - 2) != '0'
|| i > 2 && integer.charAt(i - 3) != '0') {
buffer.append(U2[j / 4]);
}
}
} else {
if (j % 4 == 0) {
// 插入[萬]或者[億]
buffer.append(U2[j / 4]);
}
// 插入[拾]、[佰]或[仟]
buffer.append(U1[j % 4]);
// 插入數字
buffer.append(RMB_NUMS[n - '0']);
}
}
return buffer.reverse().toString();
}
public static void main(String[] args) {
System.out.println(integer2chinese(11));
}
}
數字轉漢字工具類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.