/**
*
*/
package test;
/**
* @author Cl
*
*/
public final class Money {
static String[] unit = {"元","十","佰","仟","萬","十","佰","仟","亿","十","佰","仟","兆"};
static String[] cn = {"零","壹","贰","叁","肆","伍","陸","柒","捌","玖"};
public static String changeToCN(String alb){
StringBuffer changed = new StringBuffer();
char[] achs = alb.toCharArray();
// for(char ach:achs){
// String sach = String.valueOf(ach);
// int d = Integer.parseInt(sach);
// changed.append(cn[d]);
// }
if(achs.length>13){
System.out.println("数值太大,无法转换!");
return null;
}
else{
for(int i = 0;i<achs.length;i++){
String sach = String.valueOf(achs[i]);
int d = Integer.parseInt(sach);
String s = cn[d];
int e = achs.length-i-1;
if(s=="零" && (e==0 || e==4 || e==8 || e==12)){
s=unit[e];
}
else if(s=="零" && (e!=0 || e!=4 || e!=8 || e!=12)){
s="零";
}
else{
s += unit[e];
}
changed.append(s);
}
String str = changed.toString();
if(str.contains("零零零")){
str = str.replaceAll("零零零", "零");
}
if(str.contains("零零")){
str = str.replaceAll("零零", "零");
}
while(str.contains("零元") || str.contains("零萬") || str.contains("零亿")){
str = str.replaceAll("零元", "元");
str = str.replaceAll("零萬", "萬");
str = str.replaceAll("零亿", "亿");
str = str.replaceAll("亿萬", "亿");
str = str.replaceAll("兆亿", "兆");
}
return str;
}
}
/**
* @param args
*/
public static void main(String[] args) {
String s = Money.changeToCN("100000001");
System.out.println(s);
}
}
发表之后,才上网上查看了这个问题的解决方法。看到有位仁兄的算法和思路和自己的一模一样。哈哈 ! 天涯何处无知己!