013 주어진 문자 제거
한 가지 해법은 JDK의 지원을 받아 String.replaceAll() 메서드를 활용하는 방법이다. 이 메서드는 주어진 정규식과 일치하는 주어진 문자열의 각 부분 문자열(문제에서는 각 문자)을 주어진 대체 문자열(문제에서는 빈 문자열인 "")로 대체한다.
public static String removeCharacter(String str, char ch) {
return str.replaceAll(Pattern.quote(String.valueOf(ch)), "");
}
위 코드를 보면 정규식을 Pattern.quote() 메서드로 래핑했다. <와 (, [, {, \, ^, -, =, $, !, |, ], }, ), ?, *, +, ., > 같은 특수 문자를 이스케이프하기 위해서다. 대개 이 메서드는 명시된 문자열의 리터럴 패턴을 반환한다.
지금부터는 정규식을 쓰지 않는 해법을 살펴보자. StringBuilder를 활용하면 된다. 기본적으로 주어진 문자열의 문자를 순회하며 각 문자와 삭제할 문자를 비교하는 방식이다. 현재 문자와 삭제할 문자가 다를 때마다 현재 문자를 StringBuilder에 이어 붙인다.
public static String removeCharacter(String str, char ch) {
StringBuilder sb = new StringBuilder();
char[] chArray = str.toCharArray();
for (char c : chArray) {
if (c != ch) {
sb.append(c);
}
}
return sb.toString();
}