public static void main(String[] args) {
Integer i = 5;
String s = toChineseNumber(i);
System.out.println("s = " + s);
}
private static String toChineseNumber(Integer d){
String[] str = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
String s = String.valueOf(d);
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
String index = String.valueOf(s.charAt(i));
stringBuffer = stringBuffer.append(str[Integer.parseInt(index)]);
}
return stringBuffer.toString();
}
根据字符串长度和charAt取出数字,以索引形式找中文字,那么如果是大数字,就需要使用到StringBuffer中的insert方法,insert中传两个参数:偏移量和插入的字符,先看源码
测试:
public static void main(String[] args) {
Integer i = 5;
String s = toChineseNumber(i);
System.out.println("s = " + s);
}
private static String toChineseNumber(Integer d){
String[] str = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
String ss[] = new String[]{"", "十", "百", "千", "万", "十", "百", "千", "亿"};
String s = String.valueOf(d);
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
String index = String.valueOf(s.charAt(i));
stringBuffer = stringBuffer.append(str[Integer.parseInt(index)]);
}
s = String.valueOf(stringBuffer);
int i = 0;
for (int j = s.length(); j > 0; j--) {
stringBuffer = stringBuffer.insert(j, ss[i++]);
}
return stringBuffer.toString();
}
如此联想到金融行业中的三位一逗问题,也是可以通过insert来实现,但是由于金融数据有小数点为点间隔,所以三位一逗稍微复杂点,也可以使用DecimalFormat格式来定义实现,这个比较简单
public static void main(String[] args) {
String str = "58888888888";
String s1 = insertCharacter(str);
System.out.println("s1 = " + s1);
}
private static String insertCharacter(String str){
return new DecimalFormat("#,###.00").format(new BigDecimal(str));
}