将数字转化为汉字货币字符

public class yujiao {
String bignum[] = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "久" };

String sign1[] = { "", "十", "百", "千" };

String sign2[] = { "圆", "万", "亿", "兆" };

String sign3[] = { "角", "分", "厘" };

yujiao(String s) {
s = s.replaceFirst("^0+", "");
int pt = s.indexOf(".");
if (pt < 0)
s = parta(s);
else
s = parta(s.substring(0, pt)) + partb(s.substring(pt + 1));
System.out.println(s);
}

String parta(String s) {
int[] number = new int[s.length()];
for (int i = 0; i < s.length(); i++)
number[s.length() - 1 - i] = Integer
.parseInt(i == s.length() - 1 ? s.substring(i) : s
.substring(i, i + 1));
s = "";
for (int i = number.length - 1; i >= 0; i--) {
s += bignum[number[i]];
s += i % 4 == 0 ? sign2[i / 4] : number[i] > 0 ? sign1[i % 4] : "";
}
while (s.indexOf("零零") != -1)
s = s.replaceFirst("零零", "零");
for (int i = 0; i < sign1.length; i++)
while (s.indexOf("零" + sign2[i]) != -1)
s = s.replaceFirst("零" + sign2[i], sign2[i]);
for (int i = sign2.length - 1; i > 0; i--)
while (s.indexOf(sign2[i] + sign2[i - 1]) != -1)
s = s.replaceFirst(sign2[i] + sign2[i - 1], sign2[i]);
return s;
}

String partb(String s) {
int[] number = new int[s.length()];
for (int i = 0; i < s.length(); i++)
number[s.length() - 1 - i] = Integer
.parseInt(i == s.length() - 1 ? s.substring(i) : s
.substring(i, i + 1));
s = "";
for (int i = number.length - 1; i >= 0; i--)
if (number[i] > 0)
s += bignum[number[i]] + sign3[number.length - i - 1];
return s;
}

public static void main(String args[]) {
new yujiao("5300000014.34");
}
}



程序来源于:www.baigooe.com

猜你喜欢

转载自baigooe.iteye.com/blog/341511
今日推荐