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)));
'programing' 카테고리의 다른 글
xpath에서 not contains ()를 사용하는 방법은 무엇입니까? (0) | 2020.11.30 |
---|---|
SSRS 디자인 모드에서 테이블 릭스 열을 쉽게 재 배열 할 수있는 방법이 있습니까? (0) | 2020.11.30 |
null 일 수있는 값을 반환하는 간단한 방법이 있습니까? (0) | 2020.11.29 |
Xcode 9 버그 : cdtool을 찾을 수 없습니다. (0) | 2020.11.29 |
Vista에서 NTFS 파티션의 할당 단위 크기를 어떻게 볼 수 있습니까? (0) | 2020.11.29 |