百无聊赖 捣腾一个金额转换为中文的类


/**
*
*/
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);
}

}



发表之后,才上网上查看了这个问题的解决方法。看到有位仁兄的算法和思路和自己的一模一样。哈哈 ! 天涯何处无知己!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值