Wie kdgregory vorgeschlagen, eine StringBuilder
Verwendung wäre wahrscheinlich ein einfacher Weg sein, mit String-Manipulation zu arbeiten.
Da ich nicht sicher war, ob die Anzahl der Zeichen vor dem Zeilenumbruch das Wort vor oder nach 30 Zeichen ist, entschied ich mich für das Wort nach 30 Zeichen, da die Implementierung wahrscheinlich einfacher ist.
Der Ansatz besteht darin, die Instanz des " "
zu finden, die mindestens 30 Zeichen nach dem aktuellen Zeichen auftritt, das mit StringBuilder.indexOf
angezeigt wird. Wenn ein Leerzeichen auftritt, wird \n
von StringBuilder.insert
eingefügt.
(Wir nehmen an, dass hier eine neue Zeile \n
ist - der tatsächliche Zeilentrenner, der in der aktuellen Umgebung verwendet wird, kann durch System.getProperty("line.separator");
abgerufen werden).
Hier ist das Beispiel:
String s = "A very long string containing " +
"many many words and characters. " +
"Newlines will be entered at spaces.";
StringBuilder sb = new StringBuilder(s);
int i = 0;
while ((i = sb.indexOf(" ", i + 30)) != -1) {
sb.replace(i, i + 1, "\n");
}
System.out.println(sb.toString());
Ergebnis:
A very long string containing many
many words and characters. Newlines
will.
sollte ich hinzufügen, dass der obige Code außer für das Beispiel wurde erprobt, nicht String
, die ich in der gezeigt habe Code. Es wäre nicht überraschend, wenn es unter bestimmten Umständen nicht funktionieren würde.
bearbeiten
Die Schleife in dem Beispielcode durch eine while
Schleife statt einer for
Schleife, die in diesem Beispiel nicht sehr geeignet war ersetzt worden.
Auch die StringBuilder.insert
Methode wurde durch die StringBuilder.replace
Methode ersetzt, wie Kevin Stich in den Kommentaren erwähnt, dass die replace
Methode anstelle der insert
verwendet wurde, um das gewünschte Verhalten zu erhalten.
Also, was ist die Frage? Funktioniert das oder nicht? –
Tut mir leid, es funktioniert nicht, ich werde die Frage bearbeiten –
Übrigens ist die korrekte Großschreibung "Java", nicht "JAVA" - aber das Tag ist in der Regel ausreichend, um die Leute wissen, welche Plattform Sie interessiert sind. – erickson