split 메서드 limit 파라미터

조경찬 (Jo Gyungchan)·2023년 11월 1일
0

자바

목록 보기
4/5
post-thumbnail

split 메서드


limit 파라미터?? 그게 뭐야!?!

public String[] split(String regex, int limit)

split 메서드에서 limit 값을 파라미터로 전달 받을 수 있다는 것을 알게 되었다.

여태 limit 파라미터의 존재조차 몰랐습니다...


limit == 0

차이가 있을까??

내가 일반적으로 사용했던 split 메서드는 split(String regex)였고, 이것은 limit 값에 0이 생략된 것이였다.

다음과 같이 사용했을때 발생했던 문제를 하나 코드를 통해 봐보자!

@Test
void splitTest(){
    String input="길동,,";
    String[]result=input.split(",");

    assertThat(result).containsExactly("길동");
}

내가 기대했던 결과는 {"길동", "", ""}과 같이 값을 가지는 것이었다.
하지만 기대했던 결과와 다르게 {"길동"}만 포함하는 것을 볼 수 있다.

이유는 limit 값이 0일 때, 맨 뒤의 값들이 빈 값이라면 이를 제거하기 때문이다.


limit < 0

이를 해결하기 위해, limit 파라미터에 음수값을 전달하여 맨 뒤의 값들을 전부 가져올 수 있다.

@Test
void splitTest(){
    String input = "길동,,";
    String[] result = input.split(",", -1);

    assertThat(result).containsExactly("길동", "", "");
}

다음과 같이 limit 파라미터에 음수 값을 전달하여 빈 값이여도 모두 전달할 수 있다.


limit > 0

또한 만약 limit 파라미터에 0보다 큰 값을 전달하면, 전달한 크기만큼 문자를 나눈다.

@Test
void splitTest(){
    String input = "길동,순신,현수";
    String[] result = input.split(",", 2);

    assertThat(result).containsExactly("길동", "순신,현수");
}

모두 split의 기능을 확실히 알고 사용하시길 바랍니다!~~
저처럼 몰라서 해결하려고 몇 시간 고민하지 마세요..

profile
한걸음씩 성장하는 개발자

0개의 댓글