띠오니 개발자 성장일지
article thumbnail
반응형

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]

반응형
profile

띠오니 개발자 성장일지

@띠오니

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!