hoony's web study

728x90
반응형

간단한 문자열을 파싱할때 사용한던 함수인데 생각지도 못한 결론이 나와서 찾아본것을 정리해본 내용입니다. 

1. 구분자를 이용한 parsing 

String str1 = "dst|t1|1|||||";
String[] str1Array = str1.split("\\|");
System.out.println(str1Array.length);

위의 경우를 실행해보면 우리가 생각하는 것과 다른 결과가 나오더라구요 

// 기본 split - 끝의 빈 문자열 무시
String[] str1Array = str1.split("\\|");
System.out.println("기본 split 결과 길이: " + str1Array.length);  // 3 출력

끝의 빈 문자열을 무시해서 생각하는것처럼 안되는 case가 발생이 됩니다. 

2. 해결방법

// limit를 음수로 지정 - 모든 빈 문자열 포함
String[] str1ArrayWithEmpty = str1.split("\\|", -1);
System.out.println("limit -1 split 결과 길이: " + str1ArrayWithEmpty.length);  // 8 출력

// 결과 내용 확인
System.out.println("\n=== 배열 내용 출력 ===");
for (int i = 0; i < str1ArrayWithEmpty.length; i++) {
    System.out.println("인덱스 " + i + ": [" + str1ArrayWithEmpty[i] + "]");
}

split() 메소드의 limit 파라미터:

  • limit > 0: 지정된 수만큼만 분할
  • limit = 0: 기본값, 끝의 빈 문자열 제거
  • limit < 0: 모든 빈 문자열을 포함하여 분할

따라서 모든 구분자를 포함하여 정확한 개수를 얻으려면 split("\\|", -1)을 사용하시면 됩니다.

역시 개발은 실행해봐야 아는듯 합니다. 
기억보다는 기록을 하기위해 포스팅을 합니다. 

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading