developer tip

Java split () 메소드는 끝에 빈 문자열을 제거합니까?

optionbox 2020. 7. 26. 12:53
반응형

Java split () 메소드는 끝에 빈 문자열을 제거합니까? [복제]


이 질문에는 이미 답변이 있습니다.

아래 프로그램을 확인하십시오.

try {
    for (String data : Files.readAllLines(Paths.get("D:/sample.txt"))){
        String[] de = data.split(";");
        System.out.println("Length = " + de.length);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Sample.txt :

1; 2; 3; 4
A; B ;;
알파벳;

산출:

길이 = 4
길이 = 2
길이 = 3

두 번째와 세 번째 출력이 4 대신 2와 3을 제공하는 이유 sample.txt파일에서 두 번째와 세 번째 행의 조건 \n은 세 번째 필드에 구분 기호를 제공 한 직후에 줄 바꿈 ( 또는 입력)을 제공해야 합니다. sample.txt파일 조건을 변경하지 않고 두 번째 및 세 번째 줄의 길이를 4로 얻는 방법과 de[2](throws ArrayIndexOutOfBoundsException) 값을 인쇄하는 방법을 아는 사람이 있습니까?


다음을 사용하여 가능한 한 자주 패턴을 적용하도록 지정할 수 있습니다.

String[] de = data.split(";", -1);

세부 사항은 두 개의 인수를 사용하는 split 메소드에 대한 Javadoc참조 하십시오.


상기보고이 문서 여기서, 중요한 인용 :

[...] the array can have any length, and trailing empty strings will be discarded.

마음에 들지 않으면 Fabian의 의견을 살펴보십시오. 호출 할 때 String.split(String), 그것은 호출 String.split(String, 0)하고 (워드 프로세서가 그것을 말한대로) 빈 문자열을 후행하는 폐기는 경우 전화 String.split(String, n)n < 0폐기 아무것도 그것을하지 않습니다.

참고 : https://stackoverflow.com/questions/545957/java-split-method-strips-empty-strings-at-the-end

반응형