将input字符流中所有符合正则表达式的子串保存到String数组中
希望大家提点可以提高效率或是简化代码的建议和思路,我自己的代码如下:// 将input字符流中所有符合正则表达式的子串保存到String数组中
static String[] matchResult(String regex, CharSequence input) {
// 用正则表达式建立Pattern对象的模板
Pattern p = (regex);
// Pattern对象方法建立输入流的Matcher匹配器
Matcher m = p.matcher(input);
int DEFAULT = 100; // 定义初始String[]大小为DEFAULT
String str[] = new String[DEFAULT]; // str用来装匹配成功的子串数组
int time = 0; // time匹配成功次数
while (m.find()) {
// 如果str已经装满,则重构一个双倍大小strNew,并把之前的数据利用temp转移过来
if (time == DEFAULT) {
DEFAULT = DEFAULT * 2;
String temp[] = str;
String strNew[] = new String[DEFAULT];
for (int i = 0; i < time; i++) {
strNew[i] = temp[i];
}
str = strNew;
}
// 把当前匹配成功的字串拷贝到str中
str[time] = new String(m.group());
time++;
}
return str;
}
[em05
[[it] 本帖最后由 usbboy2009 于 2009-8-1 13:40 编辑 [/it]]