我想允许用户在搜索中使用"*"
元数据,并希望使用用户使用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;
}
答案 0 :(得分:2)
怎么样
"\\Q" + pattern.replace("*", "\\E.*\\Q") + "\\E";