Leerzeile im Stringbuffer entfernen

unistudent

Grünschnabel
Hallo,

ich habe eine Methode, die einen String in einen Stringbuffer mit sb.appand(Wort+"\n") dranhängt. Der Speicher vom Stringbuffer ist vorher festgelegt.

Nun muss ich eine Methode schreiben, die ein Wort aus dem buffer löscht. Bis hier hin hab ich es noch hinbekommen. Mein Problem ist jetzt, wenn ich das gesuchte Wort lösche dann entsteht genau da eine Leerzeile. Ich habe versucht diese Leerzeile durch eine if abfrage zu löschen/ersetzen.
Damit löscht er nicht nur die Leerzeile sondern hängt die Wörter zusammen. Beispiel:

Im Stringbuffer:
brille
stift
mappe

stift möchte ich jetzt löschen, als ausgabe bekomme ich:
brille

mappe

Wenn ich die Leerzeile lösche/ersetze, als ausgabe bekomme ich:
brillemappe

Das ist die abfrage für das Löschen der Leerzeile:
Code:
for(int h=0; h<sb.length(); h++) {
					
	if(sb.indexOf("\n") == h){
						
	//sb.deleteCharAt(h);
	//sb.insert(h, " ");
	//sb.replace(h, h, " ");
	//sb.setCharAt(h, ' ');
	//sb.delete(sb.indexOf("\n"), h);
	}break;
}

Was mache ich falsch?
 
Hi und Willkommen bei tutorials.de,
ich würde dir empfehlen für das entfernen von einem String nicht über den StringBuffer sondern über String zu gehen. Das geht viel einfacher und funktioniert auch. ;)
Java:
StringBuffer str = new StringBuffer();
str.append("brille").append("\n");
str.append("stift").append("\n");
str.append("mapp").append("\n");

String string = str.toString();
string = string.replace("stift\n", "");
str = new StringBuffer(string);

System.out.println(str);

Gruß

Fabio
 
Danke für deine Antwort.
Das Problem ist jetzt dass er alle Wörter(stift) löscht. Er soll nur eins löschen.

Ich hab das jetzt mich s.replaceFirst gemacht. Aber habe immer noch das problem dass da jetzt immer noch die Leerzeile da ist.
 
Zuletzt bearbeitet von einem Moderator:
Code:
void add(String wort) {
 sb.append(wort+"\n");
}

void remove(String delete) {
		String s = sb.toString();
		
		for(int z=0; z<sb.length()-1; z++) {
			if(z == s.indexOf(delete)) {
				s=s.replaceFirst(delete, "");
				sb = new StringBuffer(s);
                                break;
			}
		}
	}
 

Neue Beiträge

Zurück