JAVA金额大小写转化中的问题

private static final Pattern AMOUNT_PATTERN=Pattern.compile("^(0|[1-9]\\d{0,11})\\.(\\d\\d)$");//不考虑分隔符正确性

private static final char[]RMB_NUMS="零壹贰叄肆伍陆柒捌玖".toCharArray();

private static final String[] UNITS={"元","角","分","整"};

private static final String[] U1={"","拾","佰","仟"};

private static final String[] U2={"","万","亿"};

下面的这段代码要怎么理解啊???
private static final Pattern AMOUNT_PATTERN=Pattern.compile("^(0|[1-9]\\d{0,11})\\.(\\d\\d)$");//不考虑分隔符正确性

private static final Pattern AMOUNT_PATTERN=Pattern.compile("^(0|[1-9]\\d{0,11})\\.(\\d\\d)$");//不考虑分隔符正确性
就是java的正则表达式,^(0|[1-9]\\d{0,11})\\.(\\d\\d)$
这个翻译过来就是^开头是 $结尾时 |或 \d 数字0-9 两个反斜线是转义
整体就是匹配 以0或1-9开头 后面跟0到11个数字 然后跟一个点,然后以两位小数结尾的一个数
Pattern类的用法可以查API
=========================================
public final class Patternextends Objectimplements Serializable正则表达式的编译表示形式。

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

因此,典型的调用顺序是

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句

boolean b = Pattern.matches("a*b", "aaaaab");等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。
此类的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-23
^(0|[1-9]\\d{0,11})\\.(\\d\\d)$是定义了金额的数字格式

(0|[1-9]\\d{0,11})是说或者是0, 或者1后边0~11个数字
\\.匹配小数点一个
(\\d\\d)匹配2个数字

整个就是说,如果是0.25或者1.00, 10.23, 12345.39, 101234567891.79样子的都符合条件
第2个回答  2011-02-23
(C5<0,"计算错误,请重新计算",SUBSTITUTE(SUBSTITUTE(TEXT(INT(FIXED(ABS(C5))),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(FIXED(C5),2),"[dbnum2]0角0分;;"&IF(ABS(C5)>1%,"整",)),"零角",IF(ABS(C5)<1,,"零")),"零分",)))