Textarea auslesen

Pixel1337

Mitglied
Hi,

ich versuche gerade ein Textfeld auszulesen und dann die einzelnen Zeilen auszulesen. Ich möchte aber nicht, dass Zeilen wo nur ein Zeilenumbruch oder nichts drin steht, in dem Array sind.

Java:
 private void einlesenActionPerformed(java.awt.event.ActionEvent evt) {
        String textOfTextare;
        textOfTextare = textfeld.getText();
        this.werte = textOfTextare.split("\n");

        for(int i = 0; i < this.werte.length -1; i++) {
            if(this.werte[i].equals("") || this.werte[i].equals("\n")) {
               this.werte[i] = null;
            }
        }

        ergebnis.setText(Integer.toString(this.werte.length));
    }

Ich bin was Java angeht noch der totale Anfänger. Ich komme eigentlich aus der PHP und JavaScript Ecke.

Ich freue mich auf Tipps und Best Practices :)
 

Jigga

Bekanntes Mitglied
du möchstest also aus zB:
"ich bin eine zeil
mit einem umbruch

und leerer zeile"

am ende folgendes haben:
"ich bin eine zeil mit einem umbruch und leerer zeile"
verstehe ich das richtig?darf man fragen was das ziel ist?
 

darekkay

Bekanntes Mitglied
Zwar steht null für "nichts", aber wenn du werte (ich nehme an, es ist ein normales Array?) ein null zuweist, verschwindet der Eintrag selbst ja nicht. Das Array wird an der Stelle i den Wert null haben, und das wird früher oder später zu Problemen führen.

Wenn du mit split-Arbeiten möchtest, dann wird der Aufwand, alle leeren Zeilen wieder zu entfernen, recht hoch sein. Die bessere Alternative wäre, bereits beim Laden des Textes alle leeren Zeilen auszulassen. Eine sehr einfache Möglichkeit: du könntest erstmal alle "\n\n" durch "\n" ersetzen und DANN split benutzen. Dafür gibt es die String.replace()-Methode. Diese müsstest du aber ggf. mehrmals durchlaufen lassen, da Sachen wie "\n\n\n\n" zu "\n\n" umgewandelt werden. In etwa so:

Java:
while(str.contains("\n\n"))
 str.replace("\n\n","\n");

@Jigga

Ich glaube, er möchte eher sowas erreichen:


Zeile1
Zeile2
(leerzeile)
Zeile3

zu

wert[0] = Zeile1
wert[1] = Zeile2
wert[2] = Zeile3
 

Pixel1337

Mitglied
Hm nicht ganz. Ich möchte die Einzelnen Zeilen in meinem Array haben.

Auf dein Beispiel bezogen

array[0] = "ich bin eine zeile"
array[1] = "mit einem umbruch"

ich möchte Dann mit den Werten weiter arbeiten.
 

Pixel1337

Mitglied
@darekkay

Sehr gute idee, Danke. Leider klappt es momentan noch nicht so wie gewünscht.

Gibt es denn eigentlich keine Möglichkeit ein Wert aus dem Array zu löschen?
 

darekkay

Bekanntes Mitglied
Ach, diesen Fehler mache ich zu oft... So sollte es natürlich heißen:

Java:
        while (str.contains("\n\n"))
            str = str.replace("\n\n", "\n");
 

darekkay

Bekanntes Mitglied
Java:
        String str = "Das\nist\nein\nmehrzeiliger\ntext.\n\n\nZwei Leerzeilen\n\nUnd noch eine\n";

        System.out.println("Vorher: \n" + str);

        while (str.contains("\n\n"))
            str = str.replace("\n\n", "\n");

        String[] arr = str.split("\n");

        for (int i = 0; i < arr.length; i++)
            System.out.println(i + ": " + arr[i]);

Funktioniert bei mir einwandfrei:

Vorher:
Das
ist
ein
mehrzeiliger
text.


Zwei Leerzeilen

Und noch eine

0: Das
1: ist
2: ein
3: mehrzeiliger
4: text.
5: Zwei Leerzeilen
6: Und noch eine

Es muss also an einer anderen Stelle liegen..
 

Jigga

Bekanntes Mitglied
also möchtest du einfach ein array haben,dass alle zeilen enthält?
dann kannst du doch einfach zeilenweise einlesen,wie du es bereits gemacht hast, und diese deinem ArrayList hinzufügen?
verstehe das problem gerade nicht wirklich,erst will er die umbrüche raus haben,dann doch nicht :D
 

Pixel1337

Mitglied
Hm überseh ich da gerae irgendwas?

Java:
 textOfTextare = textfeld.getText();

        while(textOfTextare.contains("\n\n")) {
            textOfTextare = textOfTextare.replace("\n\n", "\n");
        }
        
        this.werte = textOfTextare.split("\n");

@Jigga

ja aber nicht die wo nichts steht..
 

darekkay

Bekanntes Mitglied
also möchtest du einfach ein array haben,dass alle zeilen enthält?
dann kannst du doch einfach zeilenweise einlesen,wie du es bereits gemacht hast, und diese deinem ArrayList hinzufügen?
verstehe das problem gerade nicht wirklich,erst will er die umbrüche raus haben,dann doch nicht :D

Er möchte einfach alle nichtleeren Zeilen in sein Array packen. Ja, eine Möglichkeit wäre es, dies zeilenweise einzulesen und die leeren Zeilen auszulassen - ich habe aber eine Möglichkeit aufgeschrieben, damit er bei "split" bleiben kann.

@Pixel - ja, du hast vergessen aufzuschreiben, was genau bei dir nicht klappt ;)
 

Pixel1337

Mitglied
ja, du hast vergessen aufzuschreiben, was genau bei dir nicht klappt
hehe, ja also es sind immer noch die "leeren" werte vorhanden :(

Mal alles Kompeltt

Java:
public class {

String[] werte;

[..]

  private void einlesenActionPerformed(java.awt.event.ActionEvent evt) {
        String textOfTextare;
        textOfTextare = textfeld.getText();

        while(textOfTextare.contains("\n\n")) {
            textOfTextare = textOfTextare.replace("\n\n", "\n");
        }
        
        this.werte = textOfTextare.split("\n");
        
       ergebnis.setText(Integer.toString(this.werte.length));
    }
}
 

obb

Mitglied
Dein Problem lässt sich auch mit regulären Ausdrücken (Regex) lösen. Dazu splittest Du zunächst den Text an den Zeilenumbrüchen (wie gehabt). Danach gehst Du jedes Element im Array durch und schaust, ob sich in den jeweiligen Zeilen überhaupt ein Zeichen befindet, welches nicht zum Leerraum gehört. Ist das der Fall, so fügst du die Zeile einer Liste aus Strings hinzu. In dieser Liste befindet sich dann am Ende deine gesuchte Ergebnismenge.
Java:
import java.util.LinkedList;

public class StringSplitten {
	public static void main(String[] args) {
		String beispielText =
			"Zeile 1\n" +
			"\n" +
			"          \n" +
			"Zeile 2\n" +
			"Zeile 3\n";
		
		String[] zeilen = beispielText.split("\n");
		LinkedList<String> zeilenMitInhalt = new LinkedList<String>();
		
		boolean keineLeerzeile;
		for(String zeile : zeilen) {
			keineLeerzeile = zeile.matches("(\\s*\\S+\\s*)+");
			if(keineLeerzeile)
				zeilenMitInhalt.add(zeile);
		}
		
		for(String zeile : zeilenMitInhalt)
			System.out.println(zeile);
	}
}
Die Liste musst Du dann ggF. noch in ein Array umwandeln. Beispiele dazu sollte es im Web zuhauf geben.
 

darekkay

Bekanntes Mitglied
Ich kann so nicht sagen, woran es liegt. Ich würde an deiner Stelle einfach ein paar Debug-Ausgaben machen. Zum Beispiel "textOfTextare" VOR und NACH der Schleife jeweils ausgeben lassen. Oder den werte-Array nach split durchlaufen und alle Elemente ausgeben lassen. In meinem Beispiel klappte nämlich alles..

Wenn du wirklich aus deinem fertigen Array alle Werte entfernen möchtest, wird's etwas aufwendiger. Du musst auf jeden Fall ein neues Array anlegen und alle nichtleeren Zeilen kopieren.

Oder du nutzt wie vorgeschlagen eine ArrayList - das erspart dir ebenfalls eine Menge Arbeit.
 

Pixel1337

Mitglied
Okay werde ich wohl hin bekommen. Viele dank, ist nen nettes Forum hier. :)

Hätte ich das in nem PHP Forum gefragt hätte ich wahrscheinlich mit dem Verweis aufs Handbuch eins auf die Mütze bekommen.
(Mit PHP wäre das aber auch nen 3 Zeiler :D )
 

Jigga

Bekanntes Mitglied
okay. da gibts es mehrere wege zur lösung.du kannst es wie darekkay mit replace machen, oder direkt mit regex arbeiten.
ich für meinen teil würde es entweder wie darekkay machen,oder den string zeilenweise in eine dummy variable einlesen und in einer if abfrage diese mit dummy.equals("") vergleichen. dann einfach dementsprechend in die arraylist einfügen,bzw zur nächsten zeile springen.

warum diese this.werte geschichte?
 

darekkay

Bekanntes Mitglied
@Jigga
Das Problem dabei ist, dass man so die Zeilen nicht erwischt, in denen sich nur Whitespace befindet.

Es ist die Frage, ob das ein Problem ist. Eine Leerzeile bedeutet, dass nur \n drin steht. Es ist eine Definitionsfrage, ob auch Zeilen ohne Inhalt als "leere Zeilen" angesehen werden sollen. Falls ja, muss man das ganze natürlich anpassen. Mit einfachem trim müsste man aber auch das Problem ohne Regex lösen können.

Ich dachte bis gerade das man mit "this" auf die eigene Klasse zugreift. Und da "wert" ja ein Member der Klasse ist....

Mit this wird auf die aktuelle Instanz der Klasse zugegriffen. Wenn es eine Klasse ist, bei der kein Objekt/keine Instanz erzeugt wird, solltest du das this weglassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
F TextArea auslesen und in Datei speichern Java Basics - Anfänger-Themen 4
M Textarea auslesen Java Basics - Anfänger-Themen 6
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
P aus Textarea bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
R Variable in Textarea auslesen Java Basics - Anfänger-Themen 7
N Wert aus Coice auslesen und in textarea einfügen Java Basics - Anfänger-Themen 23
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
J Buchstaben aus textArea extrahieren Java Basics - Anfänger-Themen 4
O ScrollPane, TextArea Java Basics - Anfänger-Themen 1
J Ärger mit TextArea und Linesep. Java Basics - Anfänger-Themen 3
T Java FX TextArea Java Basics - Anfänger-Themen 3
M TextArea scrollbar bei editable false Java Basics - Anfänger-Themen 5
D JScrollPane mit TextArea Java Basics - Anfänger-Themen 5
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
T Klassen JTextArea und TextArea Java Basics - Anfänger-Themen 8
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
P JavaFX TextArea.setText Java Basics - Anfänger-Themen 13
K Symmetrische Verschlüsselung von TextArea Java Basics - Anfänger-Themen 7
fLooojava Output in einer Textarea einfärben Java Basics - Anfänger-Themen 7
S import java.*; vs import java.awt.TextArea Java Basics - Anfänger-Themen 7
S TextArea, RandomAccessFile, Apend und andere Tricks... Java Basics - Anfänger-Themen 7
G textarea action Java Basics - Anfänger-Themen 5
F Erste Schritte String von anderer Klasse auf TextArea von erster Klasse Java Basics - Anfänger-Themen 12
A Timer: textarea.getText() mit Variable vergleichen Java Basics - Anfänger-Themen 3
M TextArea hält Zeilengrenze nicht ein Java Basics - Anfänger-Themen 4
H Input/Output Inhalt einer TextArea in Hex umwandeln Java Basics - Anfänger-Themen 10
R Array in Textarea ausgeben Java Basics - Anfänger-Themen 3
Binary.Coder Bruch in Textarea Java Basics - Anfänger-Themen 5
0 String farbig in TextArea Java Basics - Anfänger-Themen 10
A TextArea und ScrollBar Java Basics - Anfänger-Themen 17
B ArrayList zu TextArea Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
G Text aus TextArea in Zwischenablage kopieren Java Basics - Anfänger-Themen 6
S Texteingabe in Textarea sperren? Java Basics - Anfänger-Themen 3
M Scrollbar zu Textarea Java Basics - Anfänger-Themen 5
Luk10 TextArea und Konsole ... Java Basics - Anfänger-Themen 3
C ArrayList In textarea ausgeben Java Basics - Anfänger-Themen 3
D TextArea clearen mit setText("") ? Java Basics - Anfänger-Themen 21
K In TextArea ausgeben ? Java Basics - Anfänger-Themen 4
M im Programm TextArea hinzufügen Java Basics - Anfänger-Themen 2
K Txt statt in TextArea in JTable einlesen und bearbeiten können Java Basics - Anfänger-Themen 4
S String repräsentation eines XML-Files für Textarea formatieren. Java Basics - Anfänger-Themen 2
Z Text aus externer Datei in TextArea einlesen Java Basics - Anfänger-Themen 5
Z TextArea Größe festlegen Java Basics - Anfänger-Themen 22
S Zeilenumbruch awt.textarea Java Basics - Anfänger-Themen 16
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
J Multithreading mit einer TextArea Java Basics - Anfänger-Themen 29
S Konsole auf Textarea Java Basics - Anfänger-Themen 7
N String vom InputStream in TextArea übertragen Java Basics - Anfänger-Themen 6
E Probleme mit setText() bzw. append() bei TextArea Java Basics - Anfänger-Themen 13
D Probleme mit TextArea und Textfield Java Basics - Anfänger-Themen 27
M Scrollpane an Textarea anhängen Java Basics - Anfänger-Themen 3
W TextArea Probleme Java Basics - Anfänger-Themen 3
M String in textarea übernehmen klappt nicht Java Basics - Anfänger-Themen 13
P TextArea Problem Java Basics - Anfänger-Themen 8
G TextArea - Strings farbig Java Basics - Anfänger-Themen 2
D Button im Bezug auf TextArea Java Basics - Anfänger-Themen 17
Q TextArea - wie mache ich einen Absatz? Java Basics - Anfänger-Themen 9
H Textarea aktualisieren Java Basics - Anfänger-Themen 2
J Textarea (zeichen) in Zahlen umwandeln Java Basics - Anfänger-Themen 5
G Bild hinter TextArea Java Basics - Anfänger-Themen 2
G Automatischer Zeilenumbruch bei einer TextArea Java Basics - Anfänger-Themen 16
D textarea in einer JSP Java Basics - Anfänger-Themen 3
M Inhalt einer TextArea in die Zwischenablage kopieren Java Basics - Anfänger-Themen 2
L Textformatierung ist TextArea Java Basics - Anfänger-Themen 7
N In der Textarea an einer bestimmten Positon weiterschreiben? Java Basics - Anfänger-Themen 6
L Strings von Datei lesen und in TextArea schieben Java Basics - Anfänger-Themen 3
7 TextArea Java Basics - Anfänger-Themen 3
O Konsolenausgabe auf TextArea umleiten Java Basics - Anfänger-Themen 4
C HTML in TextArea deaktivieren. Java Basics - Anfänger-Themen 2
V TextArea einlesen, zeichen verändern, ausgeben! Java Basics - Anfänger-Themen 2
U Cursorposition in Textarea rausfinden Java Basics - Anfänger-Themen 7
R in einer TextArea den Cursor gleich anzeigen lassen Java Basics - Anfänger-Themen 3
G wieso ist die TextArea im Fenster nicht sichtbar Java Basics - Anfänger-Themen 3
N Teilweiseausgabe eines Vectors in eine TextArea Java Basics - Anfänger-Themen 21
B Größe der Textarea Java Basics - Anfänger-Themen 3
N Inhalt einer TextArea überschreiben Java Basics - Anfänger-Themen 4
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
J TextArea auf Anfang setzen Java Basics - Anfänger-Themen 3
L Frage zu TextArea! Java Basics - Anfänger-Themen 16
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40

Ähnliche Java Themen

Neue Themen


Oben