package demo;
// String[] str = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String[] str = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
// String ss[] = new String[] { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" };
String ss[] = new String[] { "", "十", "百", "千", "万", "十", "百", "千", "亿" };
String s = String.valueOf(d);
// System.out.println(s);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
String index = String.valueOf(s.charAt(i));
sb = sb.append(str[Integer.parseInt(index)]);
}
String sss = String.valueOf(sb);
// System.out.println(sss);
char[] c = sss.toCharArray();
int i = 0;
String ch;
for (int j = sss.length(); j > 0; j--) {
ch = String.valueOf(c[j-1]);
if(i==4){
if(ch.equals("零")){
sb = sb.insert(j-1, ss[i++]);
}else{
sb = sb.insert(j, ss[i++]);
}
}else if(ch.equals("零")){
i++;
}else{
sb = sb.insert(j, ss[i++]);
}
}
sss = String.valueOf(sb);
sss = test2(sss);
sss = test3(sss);
sss = test4(sss);
System.out.println(sss);
}
if(str.indexOf("零零")>0){
StringBuilder sb = new StringBuilder(str);
sb.replace(str.indexOf("零零"), str.indexOf("零零")+1, "");
str = sb.toString();
return test2(str);
}
return str;
if(str.indexOf("零万")>0){
StringBuilder sb = new StringBuilder(str);
sb.replace(str.indexOf("零万"), str.indexOf("零万")+1, "");
str = sb.toString();
return test2(str);
}
return str;
}
//当出现"零万"的时候变成“万”
private static String test4(String str){
String str2 = str.substring(str.length()-1);
if(str2.equals("零")){
return str.substring(0,str.length()-1);
}
return str;
}
public static void main(String[] args) {
test(100100);
// test(999999999);
// test(111000);
}
public class Test {
//主方法
// String[] str = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String[] str = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
// String ss[] = new String[] { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" };
String ss[] = new String[] { "", "十", "百", "千", "万", "十", "百", "千", "亿" };
String s = String.valueOf(d);
// System.out.println(s);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
String index = String.valueOf(s.charAt(i));
sb = sb.append(str[Integer.parseInt(index)]);
}
String sss = String.valueOf(sb);
// System.out.println(sss);
char[] c = sss.toCharArray();
int i = 0;
String ch;
for (int j = sss.length(); j > 0; j--) {
ch = String.valueOf(c[j-1]);
if(i==4){
if(ch.equals("零")){
sb = sb.insert(j-1, ss[i++]);
}else{
sb = sb.insert(j, ss[i++]);
}
}else if(ch.equals("零")){
i++;
}else{
sb = sb.insert(j, ss[i++]);
}
}
sss = String.valueOf(sb);
sss = test2(sss);
sss = test3(sss);
sss = test4(sss);
System.out.println(sss);
}
//处理多个0的方法
if(str.indexOf("零零")>0){
StringBuilder sb = new StringBuilder(str);
sb.replace(str.indexOf("零零"), str.indexOf("零零")+1, "");
str = sb.toString();
return test2(str);
}
return str;
}
//当出现"零万"的时候变成“万”
if(str.indexOf("零万")>0){
StringBuilder sb = new StringBuilder(str);
sb.replace(str.indexOf("零万"), str.indexOf("零万")+1, "");
str = sb.toString();
return test2(str);
}
return str;
}
//当出现"零万"的时候变成“万”
private static String test4(String str){
String str2 = str.substring(str.length()-1);
if(str2.equals("零")){
return str.substring(0,str.length()-1);
}
return str;
}
public static void main(String[] args) {
test(100100);
// test(999999999);
// test(111000);
}
}
最后只留了一个可以预见到的BUG 比如说十万 但是结果是一十万
十一 的结果是一十一
这个一十不可以类似于零万更改成万 因为我们的习惯是如果他是开头或者开头是0的时候才只读十 前面的数需要再判断一下才行