java

[java] .split() 사용시 주의사항

이레몬스터 2023. 10. 26. 10:34

개요

  • api로 받아온 String값을 구분자(,(쉼표))로 split하여 배열에 담아 작업을 하는 도중 예상하지 못한 값을 반환하는 것을 발견
  • 다신 같은 실수를 하지 않기 위해 포스팅,,,

코드 예시

String resultStr = apiObj.get("rel_list"); 
// -> 받아오는 값 예시 "1-1, 1-2, 1-3"

String[] resultArr = resultStr.split(",");
// -> ["1-1", "1-2", "1-3"] 

// 그리고 문제가 되었던 부분...
int arrLength = resultArr.length;
for(int i = 0; i<arrLength; i++){
    //처리~
    testVO.setRelList(resultArr[i]);
}
  • 이게 왜 문제가 되느냐?!
  • 바로바로, 값을 못 받아왔을 때 문제가 된다!
    • 원래라면 "1-1, 1-2, ..." 이렇게 값을 받아와야겠지만
    • 값이 없을 때는 "" 이렇게 빈 String으로 값이 넘어온다고 가정했을때

String[] resultArr = resultStr.split(",");
이 코드의 실행값이 내 예상으로는 0 이었지만, 실제로는 1 이 잡히게 된다
아마도 .length가 배열 크기(내용물이 있고 없고와는 상관없이) 를 체크하기 때문에
split을 하면서 크기가 1인 배열을 반환하는 것 같다.

따라서, 조건문으로 받아온 값이 빈 String 값이 아닌지 체크해주는 로직을 추가해주어야 했다.
if(!resultStr.equals("")) {~}