将“¥23570923”转换成“二千三佰五拾七万零九佰二拾三元”
刚写的,细节没处理,记录一下
//初始字符串
String str="¥23570923";
//去掉¥
String mach=str.substring(1,str.length());
/**
* 将字符串长度改为4的整数倍
*/
//第一步计算字符串有几节(按4位一节)
int flag=mach.length()/4;
//判断字符串是不是为整节,不是的话进行修改
if (mach.length()%4!=0)
{
//修改
String string="000"+mach;
//节数+1
flag++;
//取出后N*4位
mach=string.substring(string.length()-flag*4,string.length());
}
/**
* 定义转换数组
*/
//0->一
String[] num= {"零","一","二","三","四","五","六","七","八","九"};
//每位单位
String[] pany={"","拾","佰","千"};
//每节单位
String[] pany2={"元","万","亿","万亿","亿亿"};
//创建结果集
StringBuilder result=new StringBuilder();
/**
* 按每节来计算 4位一节 从最大的节开始
*/
for (int i = 0; i < flag; i++) {
//取出前四位
String tem=mach.substring(i*4,(i+1)*4);
//将这4位逐一替换为大写
for (int j = 0; j < 4; j++) {
int index = tem.charAt(j)-'0';
result.append(num[index]);
//如果这一位不是 “0” 要加单位
if (index!=0)
result.append(pany[3-j]);
}
//4位结束之后有一个 节单位 加上
result.append(pany2[flag-i-1]);
}
//将多为“零”替换成一个
String finallyResult=result.toString().replaceAll("[零]+","零");
//删除首位的“零”
if (finallyResult.substring(0,1).equals("零"))
finallyResult=finallyResult.substring(1,finallyResult.length());
//输出结果
System.out.println(finallyResult);