업무중에 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의 표현은 정규식으로 표현되어지므로
정규식 예약어인 파이프기호에는
이스케입문자 \가 있어야 하며 ""안에서 \는 \\로 표현한다고 합니다.
'프로그래밍 > Java' 카테고리의 다른 글
[Java] List<?> indexof (equals, hascode @Override) (0) | 2023.11.04 |
---|---|
[Java] Jsoup를 이용한 웹 크롤링 (0) | 2023.06.15 |
자바로 OpenAPI로 받은 XML 데이터 파싱하기 (0) | 2023.06.13 |
[JAVA] Map for-each 정리 (0) | 2023.06.08 |
[Java] HashMap Value 기준으로 정렬 (0) | 2023.01.24 |