/**
* 将x转换为大写金额形式
*
* @param x
*/
public static String fun(String x) {
StringBuffer sb = new StringBuffer();
//判断是否有小数点
int point = x.indexOf(".");
int nLen = x.length();
//截取小数点前的位数
if (point != -1) {
nLen = point;
}
//支持数字到千亿,即12位整数+“."+X角Y分
char[] units = { '仟', '佰', '拾', '亿',
'仟', '佰', '拾', '万',
'仟', '佰', '拾',
'元', '角', '分' };
char[] digits = { '零', '壹', '贰', '叁', '肆',
'伍', '陆', '柒', '捌', '玖' };
int len = units.length;
//处理小数点前的数字
for (int i = 0; i < nLen; i++) {
int d = x.charAt(i) - '0';
sb.append(digits[d]);
int index = len - 2 - nLen + i;
sb.append(units[index]);
}
//转换“角,分”
if (nLen < x.length()) {
int jIndex=x.charAt(nLen + 1) - '0';
if(jIndex!=0)
{
sb.append(digits[jIndex]);
sb.append(units[len - 2]);
}
int fIndex=x.charAt(nLen + 2) - '0';
if(fIndex!=0)
{
sb.append(digits[fIndex]);
sb.append(units[len - 1]);
}
}else
sb.append("整");
boolean yes=true;
//循环去掉多余的零
while(yes){
yes=false;
int i1 = sb.indexOf("零仟");
if (i1 != -1) {
sb.deleteCharAt(i1 + 1);
yes=true;
}
int i2 = sb.indexOf("零佰");
if (i2 != -1)
{
sb.deleteCharAt(i2 + 1);
yes=true;
}
int i3 = sb.indexOf("零拾");
if (i3 != -1)
{
sb.deleteCharAt(i3 + 1);
yes=true;
}
int zz = sb.indexOf("零零");
if (zz != -1)
{
sb.deleteCharAt(zz);
yes=true;
}
int lyi=sb.indexOf("零亿");
if(lyi!=-1)
{
sb.deleteCharAt(lyi);
yes=true;
}
int lw = sb.indexOf("零万");
if(lw!=-1)
{
sb.deleteCharAt(lw);
yes=true;
}
int ly = sb.indexOf("零元");
if(ly!=-1)
{
sb.deleteCharAt(ly);
yes=true;
}
int y=sb.indexOf("亿");
if(y==0)
sb.deleteCharAt(y);
int w=sb.indexOf("万");
if(w==0)
sb.deleteCharAt(w);
}
return sb.toString();
}