[Java] Split시 공백 처리 방법
- Language/Java
- 2019. 5. 21.
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"과 같은 값을 넣어서 처리를 했는데 이와 같은 삽질을 하지 않길 바라면서 포스팅 끝
반응형
'Language > Java' 카테고리의 다른 글
[Java] 이클립스(Eclipse) 설치 및 실행하기 (0) | 2020.08.02 |
---|---|
[Java] JDK 설치 및 환경변수 설정 방법 (2) | 2020.08.02 |
[Java] List/배열값 한줄로 SUM (0) | 2019.01.16 |
[JAVA] 랜덤 문자열 생성 방법 (0) | 2018.12.24 |
[JAVA] 소수점 자리수 이쁘게 보여주기 (0) | 2018.12.04 |