본문 바로가기
프로그래밍/Java

[Java] "|" 를 구분자로 하여 split 하기

by so5663 2023. 6. 14.

 

 

업무중에 split으로 문자열을 자르다 보면 "|" 문자를 기준이 필요한 경우가 생겼는데

아무리 해도 이상하게 split되고 있었다.

String str = "aaa|bbb|ccc";
String[] result = str.split("|");

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

/*
아래와 같이 출력
0=
1=a
2=a
3=a
4=|
5=b
6=b
7=b
8=|
9=c
10=c
11=c
*/

 

구글링 결과

"|"는 boolean과 같은 결과를 리턴하기 때문에 OR 조건에 걸리는 것이라고 합니다.

 

해결방법

String str = "aaa|bbb|ccc";

//str.split("|") 에서 str.split("\\|")으로 변경
String[] result = str.split("\\|");

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

/*
아래와 같이 출력
0=aaa
1=bbb
2=ccc
*/

 

split의 표현은 정규식으로 표현되어지므로

정규식 예약어인 파이프기호에는

이스케입문자 \가 있어야 하며 ""안에서 \는 \\로 표현한다고 합니다.