2
我想允许用户在搜索中使用metachar,并且想要使用由Pattern.compile
用户输入的模式。所以我将不得不逃脱用户输入的所有其他元字符,除了*
。我正在用下面的代码来做,有没有更好的方法来做到这一点?转义除一些元字符以外的所有字符
private String escapePattern(String pattern) {
final String PATTERN_MATCH_ALL = ".*";
if(null == pattern || "".equals(pattern.trim())) {
return PATTERN_MATCH_ALL;
}
String remaining = pattern;
String result = "";
int index;
while((index = remaining.indexOf("*")) >= 0) {
if(index > 0) {
result += Pattern.quote(remaining.substring(0, index)) + PATTERN_MATCH_ALL;
}
if(index < remaining.length()-1) {
remaining = remaining.substring(index + 1);
} else
remaining = "";
}
return result + Pattern.quote(remaining) + PATTERN_MATCH_ALL;
}
什么是你想改善?可读性?性能?简明? – 2011-06-15 09:55:59
我写的代码非常冗长,我想要的是使用任何内置的功能,而不是我自己做这个。所以兼具可读性,简洁性 – keshav84 2011-06-15 10:50:05