String nach Zeichen ersetzen

  • Themenstarter Themenstarter needHelp
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
N

needHelp

Gast
Hallo zusammen, ich habe ein kleines Problem und hoffe jemand von euch kann mir helfen.
Ich habe einen String in dem ein dateiname mit dem gesammten Pfad gespeichert ist. Nun möchte ich den Text nach dem letzten "/" mit einem anderen text ersetzen. Den index des "/" habe ich schon mittels lastIndexOf() bekommen, aber wie kann ich jetzt den Text danach ersetzen?
Vielen Dank schon im Voraus

Gruss Marco
 
StringBuffer sb = new StringBuffer("AlterString/text.txt");
int start = sb.lastIndexOf("/");
int end = sb.length();
String neu_string = "neu_text.pdf"
sb.replace(start, end, neu_string);

text.txt wird durch neu_text.pdf ersetzt. Es kann sein, dass du vielleicht noch +1 setzen musst. Habe jetzt kein Lust darüber nachzudenken 🙂

Gruss
 
Zunächst mal muß man wissen, daß Strings in Java statisch sind: ihr Inhalt kann also nicht geändert werden, schon gar nicht ihre Länge. Daß man trotzdem Strings mit "+" aneinanderhängen und einem String zuweisen kann, ist ein Feature der Sprache Java, nicht der String-Klasse! Java konvertiert dazu den linken Teil der "Addition" in einen Stringbuffer, hängt mit der Stringbuffer-Methode "append" den rechten Teil an und wandelt das Ergebnis wieder in String.

Code:
    x = "a" + 4 + "c"

wird kompiliert zu:

Code:
     x = new StringBuffer().append("a").append(4).append("c").toString()

Die syntaktisch einfachste Möglichkeit für Dein Problem wäre also:

Code:
        String test = "Der lustige Lurch\\";
        String anhang = " tanzt nackt im Park.";
        int index = test.indexOf('\\');
        
        test = test.substring(0,index) + anhang;
        System.out.println(test);

Dabei darf man aber nicht vergessen, dß intern ein StringBuffer-Objekt angelegt wird. In einer Schleife o.ä. wäre es deshalb sinnvoller, den StringBuffer explizit zu erzeugen und wiederzuverwenden.[/code]
 
Deshalb sollte man von Anfang an gleich StringBuffer wählen(wie oben schon erwähnt). Ein späterer Cast auf String ist dann kein Problem mehr.
 
Es ist halt aber nicht überall ein Performancegewinn. Wenn man den Stringbuffer nur anlegt, um einmal anzuhängen, kann man auch gleich die "+"-Methode wählen.
In diesen Fällen würde ich persönlich die syntaktisch kürzere und IMHO besser lesbarere Version mit "+" vorziehen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben