CharMatcher 클래스는 Predicate가 Object에 대해 참/거짓을 판별하듯이, 모든 자바(Java) char 값에 대해 참(true) 또는 거짓(false) 여부를 판별하는 기능을 제공합니다. 구아바(Guava) 라이브러리에 포함된 이 클래스는 문자 검사, 필터링, 치환 작업을 간결하고 효율적으로 처리할 수 있게 해줍니다.
CharMatcher의 주요 메서드
CharMatcher에서 자주 사용되는 핵심 메서드는 다음과 같습니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | CharMatcher and(CharMatcher other) 현재 매처(matcher)와 다른 매처(other) 양쪽 모두에서 일치하는 문자만 일치시키는 새로운 매처를 반환합니다. |
| 2 | static CharMatcher anyOf(CharSequence sequence) 주어진 문자 시퀀스(sequence)에 포함된 문자 중 하나라도 일치하면 참을 반환하는 char 매처를 생성합니다. |
| 3 | boolean apply(Character character) 더 이상 권장되지 않는 메서드(Deprecated)입니다. Predicate 인터페이스를 만족시키기 위해서만 제공되며, 대신 matches(char) 메서드를 사용하는 것이 좋습니다. |
| 4 | String collapseFrom(CharSequence sequence, char replacement) 입력 문자 시퀀스의 복사본을 반환하며, 이 매처와 일치하는 연속된 문자 그룹을 하나의 대체 문자(replacement)로 압축하여 치환합니다. |
| 5 | int countIn(CharSequence sequence) 문자 시퀀스 내에서 매처와 일치하는 문자의 개수를 반환합니다. |
| 6 | static CharMatcher forPredicate(Predicate<? super Character> predicate) 주어진 Character 기반 프리디케이트(predicate)와 동일하게 동작하지만, 원시 타입인 char 인스턴스를 대상으로 처리하는 매처를 반환합니다. |
| 7 | int indexIn(CharSequence sequence) 문자 시퀀스에서 처음으로 일치하는 문자의 인덱스를 반환하며, 일치하는 문자가 없으면 -1을 반환합니다. |
예제 코드
선호하는 편집기를 사용하여 C:/> Guava 디렉터리에 다음 자바 프로그램을 작성해 보겠습니다.
다음은 GuavaTester.java 파일의 전체 코드입니다.
import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester tester = new GuavaTester();
tester.testCharMatcher();
}
private void testCharMatcher() {
// 숫자만 추출
System.out.println(CharMatcher.DIGIT.retainFrom("mahesh123"));
// 문자열 양 끝의 공백을 제거하고, 연속된 공백은 하나의 공백으로 압축
System.out.println(CharMatcher.WHITESPACE.trimAndCollapseFrom(" Mahesh Parashar ", ' '));
// 모든 숫자를 '*' 문자로 치환
System.out.println(CharMatcher.JAVA_DIGIT.replaceFrom("mahesh123", "*"));
// 숫자 또는 소문자가 아닌 문자를 모두 제거
System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE).retainFrom("mahesh123"));
}
}
컴파일 및 실행
다음과 같이 javac 컴파일러를 사용하여 클래스를 컴파일합니다.
C:\Guava>javac GuavaTester.java
컴파일이 완료되면 다음 명령으로 GuavaTester를 실행합니다.
C:\Guava>java GuavaTester
실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
123 Mahesh Parashar mahesh*** mahesh123
첫 번째 줄은 숫자만 남긴 결과, 두 번째 줄은 양 끝 공백이 제거되고 공백이 정리된 결과, 세 번째 줄은 숫자가 별표(*)로 치환된 결과, 네 번째 줄은 숫자와 소문자만 유지된 결과입니다. 이처럼 CharMatcher를 활용하면 복잡한 문자열 처리 로직을 몇 줄의 코드로 손쉽게 구현할 수 있습니다.