Java String split()의 빈 문자열 처리

yesjuhee·2024년 11월 1일

Java 공부

목록 보기
15/17

입력에 대한 예외 처리를 하기 위해 이것 저것 다양한 입력 예시를 넣어보면서 테스트 하다가 String의 split 메서드가 빈 문자열을 처리하는 방식을 알아보게 되었습니다.

결론만 말하자면 String.split()으로 만들어진 문자열 배열에서, 빈 문자열이 있는 경우, 후행 빈 문자열을 모두 삭제합니다.

뒤에서부터 실제 분할된 문자열이 나오기 전까지 등장하는 빈 문자열들은 모두 무시한다는건데요, 이 설명만으로는 쉽게 이해가 되지 않으니 예시로 이해해봅시다!

"boo:and:foo".split("o"); // 1
",,".split(",");          // 2
" ,  ,,".split(",");      // 3
",, ,".split(",");        // 

각 테스트의 결과는 아래와 같습니다.
1. ["b", "", ":and:f"]
2. []
3. [" ", " "]
4. ["", "", " "]

예를 들어 1번의 경우 "o"를 딜리미터로 하여 1차로 분할하면
["b", "", :and:f", "", ""]가 되는데요, 배열 뒷부분의 빈 문자열들은 삭제되어 결과적으로 ["b", "", ":and:f"]가 되는 것입니다!


그럼 빈 문자열을 모두 살리고 싶다면 어떻게 할까요? split의 두 번째 인자로 음수 값을 넘겨주면 빈 문자열을 삭제하지 않습니다.

"boo:and:foo".split("o", -1); // ["b", "", ":and:f", "", ""]
",,".split(",", -1);          // ["", "", ""]
" ,  ,,".split(",", -1);      // [" ", "  ", "", ""]
",, ,".split(",", -1);        // ["", "", " ", ""]
profile
https://yesjuhee.tistory.com/

0개의 댓글