Linien der JTextArea zu einer ArrayList<String>
Wie würde man konvertiert jede Zeile in ein JTextArea
in eine ArrayList<String>
? Das ist, wie stellt man das erkennen von Zeilenumbrüchen in JTextArea?
Hier ist meine derzeitige pseudo-code-Implementierung:
- text aus JTextArea
- Gehen jeden char in JTextArea und fügt Sie zu einem string namens currentWord, bis es findet ein Zeilenumbruch char //(gibt es das noch?)
- Wenn die Schleife erkennt einen Zeilenumbruch, fügt er currentWord die arrayList und setzt currentWord zu leeren.
- Nachdem die Schleife beendet wird, fügen Sie currrentWord die ArrayList.
1. Gibt es ein einfacher Weg, dies zu tun?
2. Funktioniert diese Umsetzung gut skalieren mit der Größe? (Ich vermute Nein)
- Meinst du echt
\n
Zeilenumbrüche oder Seitenumbrüche, die nur zufällig auftreten, in eine lange Zeichenfolge, da macht es breiter als die aktuellen anzeigen? Ersteres ist leicht (split(textvalue,"\n"
). Letzteres macht keinen Sinn, da die splits ändern würde, je nach Ansicht ist die Breite. - Würde ich das erste vermuten. Wenn der Benutzer Zeilenumbrüche mit der enter-Taste, würde das registrieren \n right?
- Ja.
Du musst angemeldet sein, um einen Kommentar abzugeben.
umarmen die macht der
Strig.split(regex)
undArrays.asList
Funktion:Beginnen Sie, indem Sie
JTextArea#getText
um ALLE den text aus dem Textfeld.Sobald Sie dass haben, können Sie
String#split
vorbei"\n"
als Wert. Das liefert ein array vonString
's trennen auf die neue Zeile.Wenn Sie möchten, zu extrahieren, jedes Wort aus der Zeile, könnte man z.B. split es wieder, vermutlich auf
" "
, die Ihnen jedes Wort.Dann können Sie
Arrays.asList
zu konvertieren, das auf einemList
(Wörter oder Zeilen) - und (vorausgesetzt Sie haben bereits eine Instanz erstellt) hat, verwenden SieArrayList#addAll
um alleString
s auf der Liste.Wenn Sie nur daran interessiert sind, in jedem einzigartigen word, können Sie ein
Set
herausfiltern von doppelten Wörtern"\\r?\\n"
für split regex ?Oder anstatt das hinzufügen von Zeilen zu ArrayList mit einer Schleife etwas eleganter:
Oder, auf Reflexion, die ich verwenden könnte, Ihre ursprüngliche Algorithmus wie diese