반응형
2021/08/18, 18:00:30 등과 같이 슬래시(/), 콜론(:) 등의 공통점을 가진 문자열을
특정 문자열 기준으로 잘라서, 배열 형식으로 나누고 싶을 때 자주 사용하는 split() 함수를 사용했다.
// 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할합니다.
String[] split(String regex)
문제점
split() 함수를 사용하던 중
2021.08.18 을 점(dot)을 기준으로 자르고 싶어 아래와 같이 작성하니
ArrayIndexOutOfBoundsException 발생
-> length가 0인걸 보니 점을 기준으로 아예 자르지도 못한 듯하다.
String str = "2021.08.18";
String year = str.split(".")[0];
System.out.println(year);
/******* Exception 발생 !!! *******/
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 0 out of bounds for length 0
원인
.(dot)은 정규식에서 개행문자(\n)를 제외한 모든 문자를 의미한다.
그래서 str.split(".")를 하면 모든 문자를 기준으로 split하기 때문에 오류가 나는 것.
해결방법
즉 단순 .(dot)은 예약어이기 때문에, 점을 기준으로 split 하기 위해서는 예약어 점이 아닌 문자 "." 이라는 것을 알려줘야 한다.
이를 해결하기 위해서는 역슬래시(\)를 사용하고, 역슬래시(\) 하나 또한 예약어이기 때문에 하나 더 추가해야 한다.
year = str.split("\\.")[0];
<참고자료>
출처: https://offbyone.tistory.com/400 [쉬고 싶은 개발자]
출처: https://marobiana.tistory.com/137 [Take Action]
반응형