콘텐츠로 건너뛰기

Java에서 구분자 여러개로 문자열 분할하기: split() 메소드 활용 방법

자바에서 문자열을 분할할 때 split() 메소드, StringTokenizer 클래스를 사용하는 것이 대표적인 방법입니다. 이 글에서는 split() 메소드를 사용하는 방법을 설명 합니다.

split() 메소드 구분자 여러개 처리

split() 메소드는 Java에서 String 클래스에 포함된 메소드 입니다. 정규 표현식을 기반으로 문자열을 분할하는 데 사용됩니다. 정규 표현식에 따라 문자열을 여러 부분으로 나누고, 그 결과를 배열로 반환합니다.

public class SplitExample {
    public static void main(String[] args) {
        
        String inputString = "apple,orange;banana;mangi";
        String[] result = inputString.split("[,;]");

        for (String token : result) {
            System.out.println(token);
        }
    }
}

----------결과-------------------------------------------------
apple
orange
banana
mango

간단한 사용 예제 코드를 작성 했습니다. 파라메터로 입력한 split(“[,;]”) 코드는 콤마(,) 또는 세미콜론(;)을 기준으로 문자열을 나누는 정규식 입니다.

public class SplitExample {

    public static void main(String[] args) {

        String inputString = "apple,orange;banana,mango";
        String[] result = inputString.split(",|;");

        for (String token : result) {
            System.out.println(token);
        }
    }
}
----------결과-------------------------------------------------
apple
orange
banana
mango

정규식에서 or를 의미하는 ‘|’를 사용해도 동일한 결과를 얻을 수 있습니다.

사용 시 주의 사항. 이스케이프 처리

정규 표현식을 사용하므로 특수문자를 사용할 때 이스케이프(\\) 처리가 필요합니다.

public class SplitExample {
    public static void main(String[] args) {

        String inputString = "apple.orange.banana.mango";
        String[] result = inputString.split("\\.");

        for (String token : result) {
            System.out.println(token);
        }
    }
}

----------결과-------------------------------------------------
apple
orange
banana
mango

위의 예제에서는 마침표(.)에 이스케이프 처리를 하지 않으면 result 배열에는 아무 값도 들어가지 않게 됩니다. 마침표(.)가 정규식에서 ‘어떤 문자 하나’를 의미하기 때문에 이스케이프 처리 없이는 원하는 결과를 만들 수 없습니다.

public class SplitExample {
    public static void main(String[] args) {
        
        String inputString = "apple|orange|banana|mango";
        String[] result = inputString.split("\\|");

        for (String token : result) {
            System.out.println(token);
        }
    }
}

----------결과-------------------------------------------------
apple
orange
banana
mango
public class SplitExample {
    public static void main(String[] args) {
        
        String inputString = "apple|orange|banana|mango";
        String[] result = inputString.split("|");

        for (String token : result) {
            System.out.println(token);
        }
    }
}

----------결과-------------------------------------------------
a
p
p
l
e
|
o
r
a
n
g
e
|
b
n
a
n
a
|
m
a
n
g
o

파이프(|) 문자를 구분자로 사용할 때 이스케이프 처리를 하지 않으면, 정규 표현식에서 OR연산자로 처리되어 전혀 엉뚱한 결과를 얻게 됩니다.

정규식에서 사용되는 특수문자를 구분자로 문자열을 분할하는 경우, 이스케이프 처리를 꼭 염두 해 두어야 합니다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다