谁能给讲解下啊 最好是注释下
public String getNumberToRMB(String m)...{
String num = "零壹贰叁肆伍陆柒捌玖";
String dw = "圆拾佰仟万亿";
String mm[] = null;
mm = m.split("\.");
String money = mm[0]; String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) + "角" +
num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分"; for (int i = 0; i < money.length(); i++) ...{
String str = "";
int n = Integer.parseInt(money.substring(money.length() - i - 1,
money.length() - i));
str = str + num.charAt(n);
if (i == 0) ...{
str = str + dw.charAt(i);
}
else if ( (i + 4) % 8 == 0) ...{
str = str + dw.charAt(4);
}
else if (i % 8 == 0) ...{
str = str + dw.charAt(5);
}
else ...{
str = str + dw.charAt(i % 4);
}
result = str + result;
}
result = result.replaceAll("零([^亿万圆角分])", "零");
result = result.replaceAll("亿零+万","亿零");
result = result.replaceAll("零+", "零");
result = result.replaceAll("零([亿万圆])", "$1");
result =result.replaceAll("壹拾","拾");
return result;
}
public String getNumberToRMB(String m)...{
String num = "零壹贰叁肆伍陆柒捌玖";
String dw = "圆拾佰仟万亿";
String mm[] = null;
mm = m.split("\.");
String money = mm[0]; String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) + "角" +
num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分"; for (int i = 0; i < money.length(); i++) ...{
String str = "";
int n = Integer.parseInt(money.substring(money.length() - i - 1,
money.length() - i));
str = str + num.charAt(n);
if (i == 0) ...{
str = str + dw.charAt(i);
}
else if ( (i + 4) % 8 == 0) ...{
str = str + dw.charAt(4);
}
else if (i % 8 == 0) ...{
str = str + dw.charAt(5);
}
else ...{
str = str + dw.charAt(i % 4);
}
result = str + result;
}
result = result.replaceAll("零([^亿万圆角分])", "零");
result = result.replaceAll("亿零+万","亿零");
result = result.replaceAll("零+", "零");
result = result.replaceAll("零([亿万圆])", "$1");
result =result.replaceAll("壹拾","拾");
return result;
}
String num = "零壹贰叁肆伍陆柒捌玖";
String dw = "圆拾佰仟万亿";
String mm[] = null;
mm = m.split("\.");//以"\."为标记将字符串分成多个子字符串,如"tom\.tony\.jim"分成tom,tony,jim三个字符串
String money = mm[0]; String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) + "角" +
num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分";//将("" + mm[1].charAt(0))的内容转换成整型,再取num中第这个整型个位置的字符 for (int i = 0; i < money.length(); i++) ...{
String str = "";
int n = Integer.parseInt(money.substring(money.length() - i - 1,
money.length() - i));//将money中某一个字符以整型输出,赋予n
str = str + num.charAt(n);
if (i == 0) ...{
str = str + dw.charAt(i);
}//i==0则为个位,则后面的单位为dw中的第零个元素,即"圆"
else if ( (i + 4) % 8 == 0) ...{
str = str + dw.charAt(4);
}//若为从右边数的第四位则为万位,单位为dw中的第四个元素,即"万"
else if (i % 8 == 0) ...{
str = str + dw.charAt(5);
}//同上道理,单位为"亿"
else ...{
str = str + dw.charAt(i % 4);
}
result = str + result;
}
result = result.replaceAll("零([^亿万圆角分])", "零");//将前面的字符串替换为后面的字符串,因为在新的输出方式中单独定义了单位,不需要原字符串中有单位了,下同
result = result.replaceAll("亿零+万","亿零");
result = result.replaceAll("零+", "零");
result = result.replaceAll("零([亿万圆])", "$1");
result =result.replaceAll("壹拾","拾");
return result;
}
为什么以"\."为标记啊 而且我在jbuilder中这样写是报错的
mm = m.split("\.");//这样写才不报错
“$1”是什么意思?
在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为“到如上所述已捕获子序列的引用”。所以可以把“$1”看成是group(1);
为什么是以"\."分解啊 而且这样我在jbuilder下提示是非法的字符
所以要改为:mm = m.split("\\."); 就是把小写的人民币在“.”处分为整数跟小数两个部分
String[] data="123:456:158:745";
String[]ds=data.split(":");
他是直接写的 我运行了没有问题 它怎么不用转义字符啊楼上的看打错了作者的程序是这样的 mm = m.split("\.");
-->作者的程序不一定是对的.你在Windows下,不用("\\.")怎么对小数点进行转义呢?你发的这个程序并不是全面的.比如你输入0.63时,程序的结果是:圆陆角叁分,而我们中国的习惯应该是陆角叁分!
所以还必须有个正则式:result = result.replaceAll("^圆", "");
-->作者的程序并不一定都是对的.在Windows下,不用"\\."怎么来对小数点进行转义呢?"String[] data="123:456:158:745";
String[]ds=data.split(":");
他是直接写的 我运行了没有问题 它怎么不用转义字符啊 "
-->LZ还没有真正理解转义的含义,当一个符号没有特殊含义时就不用转义
而"."之所以要转义是因为它有特殊的意义.在正则式中,没转义的"."代表除了换行符之外的任何字符.