Große Zeichenfolge aufgeteilt in Zeilen mit maximaler Länge in Java
String input = "THESE TERMS AND CONDITIONS OF SERVICE (the Terms) ARE A LEGAL AND BINDING AGREEMENT BETWEEN YOU AND NATIONAL GEOGRAPHIC governing your use of this site, www.nationalgeographic.com, which includes but is not limited to products, software and services offered by way of the website such as the Video Player, Uploader, and other applications that link to these Terms (the Site). Please review the Terms fully before you continue to use the Site. By using the Site, you agree to be bound by the Terms. You shall also be subject to any additional terms posted with respect to individual sections of the Site. Please review our Privacy Policy, which also governs your use of the Site, to understand our practices. If you do not agree, please discontinue using the Site. National Geographic reserves the right to change the Terms at any time without prior notice. Your continued access or use of the Site after such changes indicates your acceptance of the Terms as modified. It is your responsibility to review the Terms regularly. The Terms were last updated on 18 July 2011.";
//text copied from http://www.nationalgeographic.com/community/terms/
Ich aufteilen will diesem großen string in Zeilen und die Zeilen sollten nicht Inhalt von mehr als MAX_LINE_LENGTH Zeichen in jeder Zeile.
, Was ich bisher ausprobiert
int MAX_LINE_LENGTH = 20;
System.out.print(Arrays.toString(input.split("(?<=\\G.{MAX_LINE_LENGTH})")));
//maximum length of line 20 characters
Ausgabe :
[THESE TERMS AND COND, ITIONS OF SERVICE (t, he Terms) ARE A LEGA, L AND B ...
Verursacht es brechen der Wörter. Das will ich nicht.
Stattdessen möchte ich eine Ausgabe wie diese:
[THESE TERMS AND , CONDITIONS OF , SERVICE (the Terms) , ARE A LEGAL AND B ...
Eine weitere Bedingung Hinzugefügt :
Wenn ein Wort der Länge größer ist als MAX_LINE_LENGTH dann das Wort bekommen sollte split.
Und die Lösung sollte ohne Hilfe von externen jars.
Kommentar zu dem Problem - Öffnen
möglich, Duplikat der Java-code für die Verpackung Textzeilen zu einem max line width
@hammer - mein client will nicht, dass mich alle externen jar-Dateien. Ich bekam keine Lösung in diesem thread, die Sie erwähnt, ohne irgendwelche externen jar-Dateien.
Yeah...habe es einfach gemacht.
InformationsquelleAutor der Frage Abhishek | 2011-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur eine Iteration durch die Zeichenfolge word durch Wort und Pause, Wann immer ein Wort geht an die Grenze.
Tippte ich einfach, dass in freehand, die Sie haben können, zu schieben und prod ein bisschen, um es zu kompilieren.
Bug: wenn ein Wort in der Eingabe ist länger als
maxLineLength
es wird angehängt werden, um die aktuelle Zeile, anstatt auf eine zu-lange Linie von seiner eigenen. Ich nehme an, Ihr die Länge der Linie ist so etwas wie 80 oder 120 Zeichen, in dem Fall ist das kaum ein problem sein.InformationsquelleAutor der Antwort Barend
Besten : Apache-Commons-Lang :
org.apache.Unterhaus.lang.WordUtils
InformationsquelleAutor der Antwort Saad Benbouzid
Dank Barend Garvelink für deine Antwort. Ich habe geändert, die obigen code zu beheben
Fehler: "wenn ein Wort in der Eingabe ist länger als maxCharInLine"
InformationsquelleAutor der Antwort Rakesh Soni
Können Sie WordUtils.wrap-Methode, die der Apache Commans Lang
Ausgabe
InformationsquelleAutor der Antwort Ravichandra
Ab @Barend 's Vorschlag, folgende ist meine Letzte version mit geringfügigen änderungen :
Ausgänge :
InformationsquelleAutor der Antwort Saad Benbouzid
Ich habe vor kurzem geschrieben, ein paar Methoden, dies zu tun, dass, wenn keine Leerzeichen vorhanden sind, in eine der Linien, entscheidet sich für die Aufteilung auf andere nicht-alphanumerische Zeichen vor Rückgriff auf eine Mitte-word aufgeteilt.
Hier ist, wie es stellte sich für mich heraus:
(Verwendet die
lastIndexOfRegex()
Methoden, die ich gepostet hier.)InformationsquelleAutor der Antwort Tomer Godinger
Meine version(Die vorherigen waren auch nicht)
InformationsquelleAutor der Antwort repo
Seit Java 8 Sie können auch Streams zur Bewältigung solcher Probleme.
Folgenden finden Sie ein vollständiges Beispiel, nutzt Reduzierung mit der .collect () - Methode
Ich denke, das sollte kürzer sein als andere, nicht-3rd-party-Lösungen.
InformationsquelleAutor der Antwort Markus Weninger