programing

Java : String split () : 끝에 빈 문자열을 포함하고 싶습니다.

nasanasas 2020. 11. 30. 17:52
반응형

Java : String split () : 끝에 빈 문자열을 포함하고 싶습니다.


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

다음 문자열이 있습니다.

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n";

이것을 인쇄하면 다음과 같이 출력됩니다 (물론 \n"문자 그대로"인쇄되지 않습니다).

\n
HERE\n
\n
THERE\n
\n
EVERYWHERE\n
\n
\n

메서드를 호출 할 때 split("\n")새 줄 ( \n) 문자 사이의 모든 문자열을 가져 오려고 합니다. 심지어 끝에는 빈 문자열이 있습니다.

예를 들어 오늘 이렇게하면 :

String strArray[] = str.split("\n");

System.out.println("strArray.length - " + strArray.length);
for(int i = 0; i < strArray.length; i++)
    System.out.println("strArray[" + i + "] - \"" + strArray[i] + "\"");

다음과 같이 인쇄하고 싶습니다 (출력 A).

strArray.length - 8
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
strArray[6] - ""
strArray[7] - ""

현재, 다음과 같이 인쇄되고 (출력 B), 끝나는 빈 문자열은 건너 뜁니다.

strArray.length - 6
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"

split()메서드에 출력 A와 같이 빈 문자열을 포함하려면 어떻게해야 합니까? 물론 여러 줄로 된 코드를 작성할 수는 있지만이를 구현하는 데 시간을 낭비하기 전에 도움이되는 간단한 방법이나 추가로 두 줄 정도의 코드가 있는지 알고 싶었습니다. 감사!


사용 str.split("\n", -1)(부정 limit인수 포함). split제로를 부여하거나 더되는 limit인수는 폐기 빈 필드를 후행없고, 그것이 긍정적 주어진 때 limit인수는 그 수에 필드의 수를 제한하지만, 부정적인 제한 수단은 어떤 분야의 수와하지가 폐기 빈 필드를 후행 수 있도록. 이것은 여기 에 문서화 되어 있으며 동작은 Perl에서 가져 왔습니다.


단일 인수 분할 방법은 후행 빈 문자열 분할을 무시하도록 지정되지만 "제한"인수를 사용하는 버전이이를 유지하므로 한 가지 옵션은 큰 제한이있는 해당 버전을 사용하는 것입니다.

String strArray[] = str.split("\n", Integer.MAX_VALUE);

개인적으로 저는 분할을위한 Guava 유틸리티를 좋아합니다.

System.out.println(Iterables.toString(
   Splitter.on('\n').split(input)));

그런 다음 빈 문자열 동작을 구성하려면 다음과 같이 할 수 있습니다.

System.out.println(Iterables.toString(
   Splitter.on('\n').omitEmptyStrings().split(input))); 

참고 URL : https://stackoverflow.com/questions/13939675/java-string-split-i-want-it-to-include-the-empty-strings-at-the-end

반응형