Java 8 분할이 때때로 결과 배열 시작 부분에서 빈 문자열을 제거하는 이유는 무엇입니까?
Java 7 이하에서는 다음을 사용하여 문자열을 분할합니다. 빈 구분 기호("")를 사용하면 선행 및 후행 빈 문자열이 모두 포함된 배열이 생성됩니다. 이 동작은 Java 8에서 변경되었습니다.
Java 8 동작
Java 8에서 빈 구분 기호로 분할하면 더 이상 결과 배열의 선행 빈 문자열이 포함되지 않습니다. 그러나 여전히 후행 빈 문자열은 제거됩니다. 이는 String.split 및 Pattern.split 구현의 변경으로 인한 것입니다.
참조 구현
Java 7과 Pattern.split의 참조 구현 비교 Java 8에서는 Java 8에 다음과 같은 추가 사항이 있습니다.
if (index == 0 && index == m.start() && m.start() == m.end()) { // no empty leading substring included for zero-width match // at the beginning of the input char sequence. continue; }
이 코드는 길이가 0인 일치 항목을 제외합니다. 결과 배열에서 입력 문자열의 시작.
호환성 유지
Java 8 동작 따르기(향후 호환성)
Java 버전 전체에서 일관된 동작을 보장하려면 정규식을 다음과 같이 수정하세요. 다음:
Java 7 동작 따르기(역호환성)
Java 7 또는 이전 버전과의 역호환성을 위한 일반적인 솔루션은 없습니다. 분할을 맞춤 구현해야 할 수도 있습니다.
위 내용은 Java 8의 String.split()이 이전 버전과 다르게 빈 구분 기호를 처리하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!