[Java] Split시 공백 처리 방법

    Java에서 상당히 빈번하게 사용되는 것이 split인데 아래와 같은 케이스가 있을 경우 문제가 발생할 수 있다.

     

    예시

    String[] values = "1,2,3,4,".split(",");

     

    위와같이 할 경우, values의 length를 체크하면 5개가 나올 것이라 생각할 수 있지만 마지막 값이 비어있을 경우 그 값은 처리를 할 수 없다.

     

    조금더 자세히 보자면

    String[] test1 = "1,2,3,4,5".split(",");
    System.out.println("test1=>" + test1.length);
    test1=>5
    
    String[] test2 = "1,2,3,4,".split(",");
    System.out.println("test2=>" + test2.length);
    test2=>4
    
    String[] test3 = "1,2,3,,".split(",");
    System.out.println("test3=>" + test3.length);
    test3=>3
    
    String[] test4 = "1,2,,3,".split(",");
    System.out.println("test4=>" + test4.length);
    test4=>4

     

    위와같이, 중간에 데이터가 없을 경우(test4의 케이스)는 처리를 하지만, 마지막에 데이터가 없을 경우 처리를 하지 않는 것을 볼 수 있다. test3의 경우는 3 이후에 콤마가 2개나 존재하지만 모두 데이터가 없기 때문에 값으로 인식을 하지 않는다.

     

     

    그럼, 이 문제를 해결하기 위해서 어떻게 해야 할까?

    String[] test5 = "1,2,3,,".split(",", -1);
    System.out.println("test5=>" + test5.length);
    test5=>5

    위와 같이, split에 인자값을 하나 추가해주면 된다. -1이라는 값을 입력하면 비어있는 값을 인식을 하게 된다. 필자는 이러한 기능이 있는지 모르고, 비어있을 경우 "NULL"과 같은 값을 넣어서 처리를 했는데 이와 같은 삽질을 하지 않길 바라면서 포스팅 끝

    반응형

    댓글

    Designed by JB FACTORY