[b]1.前言。[/b]
如题。
[b]2.例子。[/b]
结果为:
[b]
4.需要注意的。[/b]
(1)注意数组下标技巧,和stringbuffer填充技巧。
(2)注意可以自己选择去不去零。
(3)如果超过10亿,本例子是会报错的,没关系,例子已经做了说明,把倒数第十位和第十位以上单独处理下,最后两个字符串拼起来就可以了。
如题。
[b]2.例子。[/b]
package test;
public class Test {
/**
* 如果超过10亿,int最大20亿,则只要把超过10亿(倒数第10位到11+的位)的部分抽出来,单独处理即可,这里略去
* @param d
*/
public static void test(int d) {
String[] str = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
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++) {
// 技巧1:利用数组下标刚好对应0-9的特殊性,拼装中文。把123转为"壹","贰","叁"
String index = String.valueOf(s.charAt(i));
sb = sb.append(str[Integer.parseInt(index)]);
}
// System.out.println(sb.toString());
String sss = String.valueOf(sb);
int i = 0;
for (int j = sss.length(); j > 0; j--) {
// 技巧二:所谓的后缀,其实是直接按位填充用
sb = sb.insert(j, ss[i++]);
}
System.out.println("不去重复的零:"+sb);
//去重复的零
System.out.println("去重复的零:"+sb.toString().replaceAll("零万", "万").replaceAll("零仟", "").replaceAll("零佰",
"").replaceAll("零拾", "零"));
}
public static void main(String[] args) {
Test d = new Test();
d.test(900070007);
}
}
结果为:
900070007
不去重复的零:玖亿零仟零佰零拾柒万零仟零佰零拾柒元
去重复的零:玖亿零柒万零柒元
[b]
4.需要注意的。[/b]
(1)注意数组下标技巧,和stringbuffer填充技巧。
(2)注意可以自己选择去不去零。
(3)如果超过10亿,本例子是会报错的,没关系,例子已经做了说明,把倒数第十位和第十位以上单独处理下,最后两个字符串拼起来就可以了。