본문 바로가기
Java

[Java] Matcher 클래스를 사용한 커스텀 구분자 지정

by bkuk 2023. 4. 18.

기존의 요구사항

기존에는 콤마(,)와 콜론(:)을 구분자로 사용했다고 가정하자.

그렇다면, 아래와 같은 메서드를 구현할 수 있다.

private static String[] split(String text) {
    return text.split(",|:");
}

 

요구사항 변경

하지만, 요구사항이 사용자가 아래와 같이 "//"와 "\n" 문자 사이에 커스텀 구분자를 지정할 수 있다고 변경되었다고 한다면?

그렇다면 split() 메서드를 수정해야한다.

 

//;\n1;2;3

 

 

아래와 같이 수정할 수 있다.

private static String[] split(String text) {
    Matcher m = Pattern.compile("//(.)\n(.*)").matcher(text);
    if( m.find() ) {
        String customDelimeter = m.group(1);
        return m.group(2).split(customDelimeter);
    }
    return text.split(",|:");
}

각각

group(1)은 "(.)" .을 String을, group(2)은 "(.*)"을 String을 의미한다.

 

댓글