본문 바로가기
java

[java] 자바에서 split("|") 사용하기 - 이스케이프 처리

by moonsiri 2020. 10. 11.
728x90
반응형

Splitting string with pipe character ("|")

아무생각없이 자바 내장함수 split로 "|" 문자를 기준으로 자르다가 이 글을 쓰게됐습니다.

 

우선 아래 코드를 보시면,

String str = "abc|def|ghk";
String[] s = str.split("|");

for (int i=0; i<s.length; i++) {
    System.out.println(s[i]);
}

}

위 코드를 실행시켜서 얻고 싶은 결과 값은 "abc", "def", "ghk" 입니다.

하지만 실행 결과는 아래와 같습니다.

a
b
c
|
d
e
f
|
g
h
k

 

 

이유가 뭘까?

 

바로 "|" 가 정규표현식으로 인식되기 때문입니다.

"|" 문자로 자른 결과값을 얻고싶다면 split("\\|") 혹은 split("[|]") 를 사용하면됩니다.

String str = "abc|def|ghk";
String[] s = str.split("\\|");

for (int i=0; i<s.length; i++) {
    System.out.println(s[i]);
}

 

실행결과는 아래와 같습니다.

abc
def
ghk

 

"|" 말고도 정규표현식에서 사용하는 메타문자인 "?", "*", "+", "(", ")", "[", "]" 등을 split에 사용할 때에는

\\(역슬래쉬 두번)를 붙여서 이스케이프(Escape)처리하면됩니다.

728x90
반응형

댓글