알고리즘 문제를 풀다 split에 대해 새로운 사실을 알게되어 글을 쓰게 됐다.
Java에서 split 함수를 알아보겠다.
문자열을 자르고(분할하고) 배열에 반환하고 싶을 때 많이 사용하는 함수이다.
매개변수로는 regex 즉, 정규표현식이 들어갈 수 있고
정규표현식과 limit (정수) 가 함께 들어갈 수 있다.

먼저 매개변수에 정규표현식만 들어간 방식이다.

String으로 선언한 aPhoneNumber 에서 "-" 기준으로 잘라
String 배열 a에 반환하는 방식이다.
실행결과는 아래와 같다.

그 다음은 limit 매개변수 까지 들어간 방식이다.
limit는 뜻 그대로 제한을 두는 매개변수 이며 문자열을 자르고 배열을 반환할 때 배열의 갯수를 제한하는 것이다.

문자열 bPhoneNumber을 잘라 문자열 배열 b에 반환하고 있는데
limit라는 매개변수를 넣어 b의 배열크기를 2로 제한했다.
실행결과는 아래와 같다.

보시는 것과 같이 b 배열안에 두개의 문자열만 들어간 것을 볼 수 있다.
하지만 여기서 의문이있다.
limit 매개변수에 0보다 작은 수를 넣으면 어떻게 될까라는 의문이 들 것이다.
결론부터 말하자면 limit에 -1을 넣으면 빈 문자열을 포함한 가능한 토큰(문자열)을 반환한다.
쉽게 말하면 마지막에 위치한 빈 문자열이 결과에 포함되어 반환한다.

만약 문자열이 -로 끝나는데 "-"로 기준으로 문자열을 자를 때
마지막에 토큰은 없지만 빈 문자열로 반환한다는 것이다 .
아래는 실행결과이다.

보시는 것과 같이 배열 마지막에 빈 문자열이 들어간 것을 볼 수 있다.
즉, 결론을 말하면
limit > 0 : limit 갯수 만큼 부분 문자열 반환
limit ==0 : 빈 문자열은 제외하고 가능한 모든 부분 문자열 반환(생략 가능)
limit < 0 : 빈 문자열을 포함한 가능한 부분 문자열을 반환
때때로 csv파일에서 마지막 값이 비어 있어도 해당 위치에 문자열을 포함시켜야하는 경우
유용하게 쓴다고 한다.
'Java' 카테고리의 다른 글
[Java] 원시 타입과 참조 타입 정리: 오토박싱과 언박싱 쉽게 이해하기 (0) | 2024.09.06 |
---|---|
[Java] 자바에서의 배열 복사 방법( arraycopy(), copyOfRange(), copyOf() ) (0) | 2024.04.05 |
[Java] 래퍼(Wrapper) 클래스 (0) | 2024.04.05 |