난 당신이 텍스트 파일이 아닌 MS-Word 또는 RTF 같은 복잡한 문서를 가정합니다.
텍스트 문서의 단락 개념은 잘 정의되어 있지 않습니다. 대부분의 경우 새 단락은 텍스트 편집기에서 문서를 열면 다음 줄에서 다음 텍스트 집합을 볼 수 있다는 사실에 의해 인식됩니다.
두 개의 특수 문자가 있습니다. new-line (LF-'\n'
) 및 캐리지 리턴 (CR-'\r'
)은 텍스트가 다음 줄에서 시작되도록합니다. 다음 행에 사용되는 문자는 사용하는 운영 체제에 따라 다릅니다.CRLF ('\r\n'
)처럼 둘 이상의 조합이 사용되는 경우도 있습니다.
자바에서는 System.getProperty("line.separator");
을 사용하여 줄/단락을 구분하는 데 사용되는 문자 또는 문자 집합을 결정할 수 있습니다. 그러나 이것은 새로운 문제를 야기합니다. MS Windows에서 텍스트 파일을 만든 다음 Unix에서 열면 어떻게 될까요? 이 경우 텍스트 파일의 라인 seprator는 Windows의 라인이지만, java는 유닉스에서 실행 중입니다.
.
내 추천 :
텍스트 (docuemnt)의 길이 THEN 0이면 단락 = 0
텍스트 (docuemnt)의 길이 그리고,
제로되지 않으면
'\n'
및 '\r'
을 줄 으로 바꿔서으로 간주하십시오.
- 텍스트 위의 줄 바꿈 문자를 검색하십시오.
- 모든 연속 줄 바꿈 문자 은 하나 단락 기호으로 간주해야합니다. (1) + ( 문단 나누기의 카운트)
참고, 스티븐 가리키는 예외는 여전히뿐만 아니라 여기에 적용 = 단락의
번호. . 일반 텍스트 문서
public class ParagraphTest {
public static void main(String[] args) {
String document =
"Hello world.\n" +
"This is line 2.\n\r" +
"Line 3 here.\r" +
"Yet another line 4.\n\r\n\r" +
"Few more lines 5.\r";
printParaCount(document);
}
public static void printParaCount(String document) {
String lineBreakCharacters = "\r\n";
StringTokenizer st = new StringTokenizer(
document, lineBreakCharacters);
System.out.println("ParaCount: " + st.countTokens());
}
}
출력
ParaCount: 5
이 문자에 대한 청중은 무엇인가? – bmargulies
구문 분석하려는 텍스트의 모양은 무엇입니까? 여러 가지 방법으로 단락 나누기를 구성 할 수 있습니다. – jball
나는 "나는 새 단락"이라는 문자열을 구분 기호로 사용하는 것을 좋아한다. 다른 물건을 방해하지 않는 것을 사용하십시오. –