2
사용자가 검색시 "*"
메타 문자를 사용하고 사용자가 입력 한 패턴을 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;
}
어떻습니까? 가독성? 공연? 간결? –
필자가 작성한 코드는 매우 장황하다. 필자도이 일을 대신 수행하는 inbuilt 기능을 사용하고 싶었다. 그래서 두 가독성, 간결 성 – keshav84