Suppongo che tu abbia un file di testo e non un documento complesso come MS-Word o RTF.
Il concetto di paragrafo nel documento di testo non è ben definito. La maggior parte dei casi in cui il nuovo paragrafo verrà riconosciuto dal fatto che quando si apre un documento nell'editor di testo, si vedrà il prossimo set di testo che inizia sulla riga successiva.
Ci sono due caratteri speciali vale a dire. new-line (LF - '\n'
) e carriage-return (CR - '\r'
) che fa iniziare il testo sulla riga successiva. Quale carattere è usato per la prossima linea dipende dal sistema operativo che usi.Inoltre, a volte una combinazione di entrambi viene utilizzata anche come CRLF ('\r\n'
).
In java è possibile determinare il carattere o il set di caratteri utilizzati per eseguire la sepa- razione di linee/paragrafi utilizzando System.getProperty("line.separator");
. Ma questo introduce un nuovo problema. Cosa succede se si crea un file di testo in MS Windows e poi lo si apre in Unix? Line seprator in file di testo in questo caso è quella di windows, ma java è in esecuzione su unix.
.
La mia raccomandazione è:
se la lunghezza del testo (docuemnt) è zero, allora paragrafi = 0.
se la lunghezza del testo (docuemnt) NON è zero, allora
- Considerare
'\n'
e '\r'
come riga interruzione caratteri.
- Analizza il testo per la riga sopra riportata caratteri.
- Qualsiasi carattere di interruzione di riga continua in qualsiasi ordine deve essere considerato come uno interruzione di paragrafo.
- Numero di paragrafi = 1 + (conteggio di interruzioni di paragrafo)
nota, eccezioni a punta da Stephen vale ancora qui pure.
.
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());
}
}
uscita
ParaCount: 5
fonte
2010-02-02 23:33:49
Qual è il tuo pubblico per questo personaggio? – bmargulies
Che aspetto ha il testo che stai cercando di analizzare? Esistono dozzine di modi diversi per formattare le interruzioni di paragrafo. – jball
Mi piace usare la stringa "I'm a new paragraph" come delimitatore. Usa tutto ciò che non interferisce con altre cose. –