这个怎么做的呀?
public class Test10 {
/**
* @param args
*/
public static void main(String[] args) {
String arr = "1101000001010";
String str = transform(arr);
System.out.println(arr+"转换后位:"+str);
}
// 定义一个方法,让数字金额转换成中国传统金额
public static String transform(String str) {
// 使用正则表达式判断字符串格式是否为数字
if (!(str.matches("\\d+"))) {
System.out.println("字符串" + str + "不是数字格式,无法转换");
}
// 将字符串最前面的0去掉
while (str.startsWith("0")) {
str = str.substring(1, str.length());
}
// 将字符串数字替换成中文数字
String[] num = new String[] { "0", "1", "2", "3", "4", "5", "6", "7",
"7", "8", "9" };
String[] cnNum = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
"捌", "玖" };
for (int i = 0; i < 10; i++) {
str = str.replace(num, cnNum);
}
// 定义一个容器存储字符串,用于对字符串的操作
StringBuilder sb = new StringBuilder(str);
int index = sb.length() - 1;
// 存放金额单位
String[] unit = { "", "拾", "佰", "千" };
String[] unit4 = { "万", "亿" };
// 判断前一个数是否为零的标记
boolean flag = false;
for (int i = 0; i < str.length(); i++) {
// 每4位插入万,每8位插入亿
if (i % 4 == 0 && i != 0) {
// 根据金额规则,单位万前面有4个0时,不插入万位,并将最低位的零删除
if ((i / 4 - 1) % 2 == 0 && index >= 3
&& str.substring(index - 3, index + 1).equals("零零零零")) {
sb.deleteCharAt(index);
index--;
continue;
}
// 否则在index+1位置插入相应的单位:万、亿
sb.insert(index + 1, unit4[(i / 4 - 1) % 2]);
}
// 如果4位的最低位为零,删除最低位的零,将零标志置为true
if (i % 4 == 0 && str.charAt(index) == '零') {
sb.deleteCharAt(index);
flag = true;
index--;
continue;
}
// 如果前一位为零并且这一位也为零,删除这一位的零
if (flag && str.charAt(index) == '零') {
sb.deleteCharAt(index);
index--;
continue;
}
// 如果当前位为零,将零标志置为true
if (str.charAt(index) == '零') {
flag = true;
index--;
continue;
}
// 当前位不为零,将零标志位置为false,插入金额单位
flag = false;
sb.insert(index + 1, unit[i % 4]);
index--;
}
// 完善金额表示形式
sb.append("圆整");
return sb.toString();
}
}
|
|