Inhalt von StringBuffer löschen

Status
Nicht offen für weitere Antworten.

Brain

Aktives Mitglied
Hallo!!!
Weiß jemand wie man den Inahlt von einem StringBuffer löscht?

OK, da gibt es die Methode delete(int start, int end). Die setzt aber nur count auf 0, der eigentliche Inhalt bleibt erhalten.
Wenn ich mir das im Debugger anschaue, sieht das so aus:

Code:
--stringBuffer = StringBuffer (id=47)
  |--count=0
  |--value=char[16] (id=195)
    |--[0]=5
    |--[1]=6
    |--[2]=7
    |--[3]=8
    |--[4]=
    |--[5]=
    |--[6]=
    ....
    |--[15]=

So, und diese Werte muss ich löschen, denn wenn ich beim nächsten Mal Werte einfüge und es sind nur drei Werte, dann wird der Index 0 bis 2 überschrieben und die 8 (Index 3) bleibt erhalten.

Falls es was hilft, die delete()-Methode steht bei mir in einer for-Schleife.

Danke schon mal.
 

Brain

Aktives Mitglied
Zur Antwort von norman:
Es funktioniert, der Inhalt von stringBuffer (so heißt mein StringBuffer) wird gelöscht, allerdings bekommt er auch eine neue ID. Wird damit nicht ein neues Objekt erstellt? Ist das OK?
Denn später, wenn das Programm fertig ist, muss unter Umständen hundert Mal ein neues Objekt erstellt werden. Oder wird dabei kein neues Objekt erstellt?

Der Vorschlag von thE_29 funktioniert leider nicht, da wird auch der count nur auf 0 gesetzt.
 

lhein

Top Contributor
Die Antwort von thE_29 ist schon korrekt, wie ein Blick auf die API - Doku verrät.

public void setLength(int newLength)

Sets the length of this String buffer. This string buffer is altered to represent a new character sequence whose length is specified by the argument. For every nonnegative index k less than newLength, the character at index k in the new character sequence is the same as the character at index k in the old sequence if k is less than the length of the old character sequence; otherwise, it is the null character '\u0000'. In other words, if the newLength argument is less than the current length of the string buffer, the string buffer is truncated to contain exactly the number of characters given by the newLength argument.

Ein setLength(0) bewirkt also, dass der Buffer bei 0 abgeschnitten wird.

Von einem 100fachen Instantiieren von StringBuffer - Objekten kann man wirklich nur abraten. (norman's Vorschlag)

LR
 

Brain

Aktives Mitglied
Irgendwie will es nicht funkionieren. Die setLength()-Methode hilft mir leider nicht weiter. Der Inhalt bleibt trotzdem erhalten.

Mache ich was falsch?
Code:
StringBuffer stringBuffer;

for (int i = 0; i < jTextField.length(); i++) {
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("123");
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("456");
}

Gibt es noch andere Möglichkeiten, den Inhalt von stringBuffer zu löschen?
 

lhein

Top Contributor
Brain hat gesagt.:
Irgendwie will es nicht funkionieren. Die setLength()-Methode hilft mir leider nicht weiter. Der Inhalt bleibt trotzdem erhalten.

Mache ich was falsch?
Code:
StringBuffer stringBuffer;

for (int i = 0; i < jTextField.length(); i++) {
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("123");
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("456");
}

Gibt es noch andere Möglichkeiten, den Inhalt von stringBuffer zu löschen?


Kannst Du mal erklären, was der Sinn dieses Codes sein soll ? Sieht irgendwie "sinnfrei" aus.
Denke sonst wirds schwer Dir hier zu helfen. Am besten mal beschreiben, was Du überhaupt machen
willst. Und vor allem was obiger Code eigentlich bewirken soll.

lr
 

Brain

Aktives Mitglied
Also, die for-Schleife ist nicht ganz. Ich habe sie zugeschnitten, da sie sonst sehr groß ist. Ich wollte eigentlich nur zeigen, was ich mit StringBuffer mache.

Der Sinn dieses Codes ist es den Inhalt des JTextFields zu selektieren.
 

lhein

Top Contributor
Den Inhalt des Textfields zu selektieren?

Also quasi:

Code:
jTextField.selectAll();

???

Bisl genauer brauchts das schon. Weil wenn das der Sinn der for-Schleife ist, dann beiss ich in die Tischkante.

lr
 

Brain

Aktives Mitglied
Nein, die Möbel kannst du in Ruhe lassen, - ich meinte damit, den String im JTextField zu zerteilen, so wie es StringTokenizer, Split oder Scanner macht. Bloß brauche ich nicht nur die Tokens sondern auch die Delimiter.

Deshalb wollte ich die Tokens und Delimiter einzeln nacheinander in einen StringBuffer schreiben und sie auch einzeln und nacheinander in eine ArrayList einfügen.
 

norman

Top Contributor
Brain hat gesagt.:
Irgendwie will es nicht funkionieren. Die setLength()-Methode hilft mir leider nicht weiter. Der Inhalt bleibt trotzdem erhalten.

Mache ich was falsch?
Code:
StringBuffer stringBuffer;

for (int i = 0; i < jTextField.length(); i++) {
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("123");
  stringBuffer.delete(0, stringBuffer.length());
  stringBuffer.append("456");
}
ich sehe hier nirgends ein setLength()

soweit ich das sehe könntest du

stringBuffer.delete(0, stringBuffer.length());

mit

stringBuffer.setLength(0);

ersetzen.
 

Brain

Aktives Mitglied
Klar, das habe ich auch gemacht. Aber wie gesagt, leider funktioniert das setLenght() genauso wenig wie delete().

Das war zum Teil mein Originalcode.

Gibt es Möglichkeiten beim Zerschneiden von Strings die Delimiter auch mitzuschneiden? Die Delimiter dürfen nicht verworfen werden.
 

norman

Top Contributor
Brain hat gesagt.:
Gibt es Möglichkeiten beim Zerschneiden von Strings die Delimiter auch mitzuschneiden? Die Delimiter dürfen nicht verworfen werden.

du kannst dem StringTokenizer so erstellen, dass er die delims nicht verwirft:

StringTokenizer(String str, String delim, boolean returnDelims)
 

Brain

Aktives Mitglied
OK. Habe ich übersehen. Danke.

Noch 'ne Frage: Sollte man StringTokenizer noch verwenden?

split() oder Scanner bieten keine Parameter oder Methoden an wie StringTokenizer, um die Delimiter zu behalten.

Außerdem, was mir an StringTokenizer auch nicht gefällt, ist, dass die Delimiter nur einzelne Zeichen sind.
 

Leroy42

Top Contributor
Nochmal zu deiner ersten Frage:

Brain hat gesagt.:
Der Vorschlag von thE_29 funktioniert leider nicht, da wird auch der count nur auf 0 gesetzt.

Und damit besitzt der StringBuffer nach außen auch einen leeren String.

Das die interne, und nur durch den Debugger zu sehende, Repräsentation noch
die Zeichen hat, ist doch vollkommen egal. Aus Anwendersicht handelt es sich eben
um einen Leerstring.

Zum Beispiel kopiert die substring-Methode auch keine einziges Zeichen, sie liefert
nur einen neuen StringContainer, der einen eigenen startindex und eine eigene
Länge besitzt; aber auf dasselbe Zeichenarray wie der Originalstring verweist.

Durch die Unveränderlichkeit von Strings ist dies auch erlaubt und sinnvoll. Wird z.B.
der Originalstring nicht mehr gebraucht, also keine Referenz mehr auf ihn besteht,
wird er vom GC zwar entsorgt, da der neue (mittels substring gebildete) String aber
nachwievor auf das Zeichenfeld des Originalstrings zeigt, wird nur dieses Zeichenfeld
vom GC verschont.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
G JTextField Inhalt in einem Long einfügen Allgemeine Java-Themen 2
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
T String auf Inhalt bzw. Schema überprüfen Allgemeine Java-Themen 12
T Threads Input/Output im Thread - Datei ohne Inhalt Allgemeine Java-Themen 1
I Inhalt einer Website auslesen Allgemeine Java-Themen 6
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
U JNI -> Inhalt dll zugreifen Allgemeine Java-Themen 5
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
S leeres package obwohl inhalt da Allgemeine Java-Themen 53
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
U Webseiten Inhalt auslesen... Allgemeine Java-Themen 7
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
C JFormattedTextField Inhalt einer Variable zuweisen Allgemeine Java-Themen 11
J XML Inhalt von Web abfragen Allgemeine Java-Themen 6
W Inhalt aus String evaluieren Allgemeine Java-Themen 6
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
S Inhalt einer zip-Datei anzeigen Allgemeine Java-Themen 11
A Inhalt ListEditor und Buttons ausblenden Allgemeine Java-Themen 5
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
D Inhalt der JTextArea drucken Allgemeine Java-Themen 2
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
T Bestimmten Inhalt aus Manifest.MF auslesen Allgemeine Java-Themen 8
F JFrame zeigt Hintergrund und nicht den Inhalt Allgemeine Java-Themen 12
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
O Inhalt vom JTextfield im DebugMode ermitteln? Allgemeine Java-Themen 2
O Vektor kopieren (Inhalt, nicht Referenzen) Allgemeine Java-Themen 3
D Inhalt eines Ordners auflisten. Allgemeine Java-Themen 2
7 Inhalt eines Objekts leeren aber Objekt nicht löschen Allgemeine Java-Themen 17
D Inhalt eines Packages im Code verarbeiten Allgemeine Java-Themen 18
J Datei Inhalt vergleichen (schnell & effizient!) Allgemeine Java-Themen 10
MQue Array inhalt verschieben Allgemeine Java-Themen 6
N RandomAccessFile überschreibt Inhalt Allgemeine Java-Themen 3
Y Klassen mit ähnlichem Inhalt: wie unterscheiden? Allgemeine Java-Themen 9
M Inhalt von Textdatei in Spinner Allgemeine Java-Themen 5
R Eingabe eines Textfeldes mit Inhalt einer Datei vergleichen Allgemeine Java-Themen 4
T Bild verliert Inhalt. Allgemeine Java-Themen 6
A "Webseite-Inhalt" ins Arabische&Französische ü Allgemeine Java-Themen 2
T HashMap#get neues Objekt, selber Inhalt Allgemeine Java-Themen 12
G Inhalt eines Arrays loggen Allgemeine Java-Themen 8
J File: Inhalt des Ordners aus dem die aktuelle Datei ausgefüh Allgemeine Java-Themen 6
P Wie kann ich den Inhalt eines Textdokuments löschen? Allgemeine Java-Themen 9
K Inhalt von Vektoren auslesen Allgemeine Java-Themen 6
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
K JTree Inhalt löschen und Anzeige aktualisieren Allgemeine Java-Themen 13
P Inhalt einer Mail anzeigen Allgemeine Java-Themen 5
G ResultSet auf Inhalt prüfen? Allgemeine Java-Themen 2
G Inhalt von Servern anzeigen lassen Allgemeine Java-Themen 9
G Inhalt einer Textdatei in eine AWT List schreiben Allgemeine Java-Themen 3
R Tabellen inhalt mal vorhanden, mal nicht!?! Allgemeine Java-Themen 2
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
127.0.0.1 StringBuffer leere Zeile löschen Allgemeine Java-Themen 8
K Immutable View auf StringBuffer? Allgemeine Java-Themen 13
S AWT StringBuffer macht nicht, was ich erwarte Allgemeine Java-Themen 2
T String vs StringBuilder vs StringBuffer Allgemeine Java-Themen 8
V Stringbuffer/builder leeren Allgemeine Java-Themen 2
neurox Stringbuffer -> MimeBodyPart Allgemeine Java-Themen 5
P StringBuffer, StringBuilder und StringWriter Allgemeine Java-Themen 4
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
G Zeilenweise aus einem StringBuffer lesen Allgemeine Java-Themen 4
D Inputstream aus StringBuffer Allgemeine Java-Themen 3
M Regex und StringBuffer: Problem mit TAB-Codierung Allgemeine Java-Themen 3
A StringBuffer manipulation Klausur Allgemeine Java-Themen 2
T Kleine Verständnisfrage zu Stringbuffer Allgemeine Java-Themen 2
M löschen in Rot Schwarz Bäumen Allgemeine Java-Themen 6
M lineare Sondierung löschen Allgemeine Java-Themen 2
A Sicheres Löschen von Dateien Allgemeine Java-Themen 7
E Varialbe komplett Löschen Allgemeine Java-Themen 26
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
glamdring273 Discord JDA, Kanal löschen Allgemeine Java-Themen 0
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
P Erste Schritte Dateien löschen Allgemeine Java-Themen 4
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
J Datei löschen, die Leerzeichen im Pfad hat Allgemeine Java-Themen 5
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
A Referenzen von Bildobjekten löschen Allgemeine Java-Themen 0
I PDF freigeben zum löschen Allgemeine Java-Themen 4
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
P JDK installieren Kann man die Ordner in C:\Users\*\AppData\LocalLow\Sun\Java\.... löschen? Allgemeine Java-Themen 3
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
G Datei löschen Allgemeine Java-Themen 8
R LinkedList und Threads: Strukturprobleme bez. löschen von Elementen Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
M lucene suchen/löschen/hinzufügen Allgemeine Java-Themen 4
R Leere Verzeichnisse löschen Allgemeine Java-Themen 11
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben