ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] Java String의 split 메소드
    JAVA 2021. 3. 7. 22:04
    반응형

    우테코에서 미션을 진행하다 보면 구분자(ex ",")를 통해 입력값을 잘라야하는 경우가 발생한다.

    이전에 split 메소드를 정확히 알지 못했을 때는 도메인에서 유효성 검증을 해도 입력값이 "a,b,c,,," 와 같이 끝자리에 콤마가 있을 때를 처리하지 못해 따로 유효성 검증 메소드를 만들어주었다.

     

    그러다 저번 로또 미션 때 페어 덕분에 이 문제를 해결하는 방법을 알게되었고 이번 블랙잭에서도 동일한 방식으로 해결하였기에 split에 대해 제대로 알아보고자 블로그에 정리하게 되었다.

     

    물론 말은 정리라고 해도 split의 limit에 초점만 두고 글은 길지 않으며 별거 없을 것이다.

     


     

    자바 문자열의 split 메소드는 구분자를 기준으로 문자열을 자르고 싶을 때 사용한다.

     

    예를 들어 "a,b,c"와 같은 문자열을 ","를 기준으로 자르고 싶을때 사용하는 것이다.

     

    split 메소드는 첫 번째 인자로 구분자, 두 번째 인자로 limit 값을 받게 되는데 이 limit 값에 따라 3가지 경우로 나뉘어진다.

     

     

    1. limit가 0일 경우

    limit가 0일 때는 구분자를 기준으로 모든 문자열을 나누고 배열에 저장하게 되는데 이때 제일 마지막에 오는 요소의 값이 없을 경우 (ex "a,b,c,,,") 그 요소를 무시하도록 되어 있다. 

    만약 구분자만 입력하면 default로 limit에 0이 오도록 작성되어 있음.

     

     

     

    2. limit가 양수일 경우

    limit로 지정한 수만큼 배열의 크기가 결정됨.

    즉, 분해 후 얻고자 하는 String[]의 크기라고 보면 된다. 다만, 분해하고자 하는 요소의 개수와 같거나 클 경우는 배열의 개수만큼 String[]을 돌려주지만, 요소의 개수보다 작을 경우 지정한 숫자(limit 값)만큼의 String[]으로 돌려준다.

    그리고 limit 값이 설정되어 있으면 끝에 있는 공백도 데이터로 본다.

     

     

     

     

    3. limit가 음수일 경우

    이거 하나를 위해서 split를 정리하기로 했던 것.

    limit가 음수일 경우 구분자에 따라 전부 나눠주며 공백 또한 데이터로 보고 배열에 저장된다.

    즉, "a,b,c,,," 일 경우 ["a", "b", "c", "", "", ""] 이렇게 배열에 저장됨.

    이로써 입력값의 끝에 구분자가 들어간 경우를 해결할 수 있게 된다.

     

     

     

     

     

     

    References

    - leejiheg.tistory.com/entry/java-split-%EA%B3%B5%EB%B0%B1

    - imhotk.tistory.com/327

    728x90

    댓글

Designed by Tistory.