在财务类的开发中,常用到数字和大写汉字的转换,个人写了一个方法,希望可供参考:
import java.util.HashMap;
import java.util.Map;
public class Number_ChineseDemo {
public static void main(String[] args) {
//测试数据
String numString="53621452454651";
String chineseNumberString=getChineseString(numString);
System.out.println(chineseNumberString);
}
public static String getChineseString(String numString) {
// 壹贰叁肆伍陆柒捌玖零
Map<Integer, String> numStr = new HashMap<Integer, String>();
numStr.put(1, "壹");
numStr.put(2, "贰");
numStr.put(3, "叁");
numStr.put(4, "肆");
numStr.put(5, "伍");
numStr.put(6, "陆");
numStr.put(7, "柒");
numStr.put(8, "捌");
numStr.put(9, "玖");
numStr.put(0, "零");
//
Map<Integer, String> strMap = new HashMap<Integer, String>();
strMap.put(1, "元");
strMap.put(2, "拾");
strMap.put(3, "佰");
strMap.put(4, "仟");
strMap.put(5, "万");
strMap.put(6, "拾");
strMap.put(7, "佰");
strMap.put(8, "仟");
strMap.put(9, "亿");
strMap.put(10, "拾");
strMap.put(11, "佰");
strMap.put(12, "仟");
strMap.put(13, "万");
strMap.put(14, "拾");
StringBuilder numSBuilder = new StringBuilder(numString);
numString = numSBuilder.toString();
while (numString.startsWith("0")) {
numSBuilder.deleteCharAt(0);
numString = numSBuilder.toString();
}
char[] numchars = numString.toCharArray();
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < numchars.length; i++) {
int num = Integer.parseInt(numchars[i] + "");
int index = numchars.length - i;
if (index == numchars.length - 1) {
if (num == 0) {
if (i < numchars.length - 1) {
if (Integer.parseInt(numchars[i - 1] + "") != 0) {
sBuilder.append(numStr.get(num));
}
}
} else {
sBuilder.append(numStr.get(num));
sBuilder.append(strMap.get(index));
}
} else {
if (index % 4 == 1) {
if (num == 0) {
sBuilder.append(strMap.get(index));
} else {
sBuilder.append(numStr.get(num));
sBuilder.append(strMap.get(index));
}
} else if (index % 4 == 2) {
if (num == 0) {
if (i < numchars.length - 1) {
if (Integer.parseInt(numchars[i + 1] + "") != 0) {
sBuilder.append(numStr.get(num));
}
}
} else {
sBuilder.append(numStr.get(num));
sBuilder.append(strMap.get(index));
}
} else if (index % 4 == 3) {
if (num == 0) {
if (i < numchars.length - 2) {
if (Integer.parseInt(numchars[i + 1] + "") != 0
&& Integer.parseInt(numchars[i + 2] + "") != 0) {
sBuilder.append(numStr.get(num));
}
}
} else {
sBuilder.append(numStr.get(num));
sBuilder.append(strMap.get(index));
}
} else {
if (num == 0) {
sBuilder.append(numStr.get(num));
} else {
sBuilder.append(numStr.get(num));
sBuilder.append(strMap.get(index));
}
}
}
// System.out.println(sBuilder.toString());
}
return sBuilder.toString();
}
}