Java String-Replace-Rätsel
Beim Versuch, Werte innerhalb eines Strings zu aktualisieren, verwendet der bereitgestellte Code die Ersetzungsmethode von String:
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; html.replace("**USERNAME**", "User A"); html.replace("**PASSWORD**", "B");
Dieser Ansatz führt jedoch nicht zu den erwarteten Ergebnissen. Warum ist das so?
String Immutability Bites
Der Schlüssel zum Verständnis dieses Problems liegt in der Unveränderlichkeit von String. Im Gegensatz zu einigen anderen Objekten in Java können Strings nicht direkt geändert werden. Jede Operation, die einen String zu ändern scheint, wie z. B. Ersetzen, erstellt tatsächlich ein neues String-Objekt.
Im angegebenen Code erstellen die Ersetzungsaufrufe neue String-Objekte, aber der Referenz-HTML-Code verweist weiterhin auf den ursprünglichen String . Dies bedeutet, dass der ursprüngliche HTML-Inhalt von den Ersetzungsversuchen nicht betroffen ist.
Die Lösung: Neuzuweisung akzeptieren
Um diese Unveränderlichkeitshürde zu überwinden, müssen Sie den Referenz-HTML-Inhalt neu zuweisen neuer String, der durch Ersetzen erstellt wurde. Hier ist der korrigierte Code:
html = html.replace("**USERNAME**", "User A"); html = html.replace("**PASSWORD**", "B");
Durch die Neuzuweisung von HTML nach jedem Ersetzungsaufruf stellen Sie sicher, dass es auf den aktualisierten String verweist, der die gewünschten Ersetzungen enthält. Diese Methode erkennt die Unveränderlichkeit von String an und umgeht sie, um die gesuchten Ersetzungen zu erreichen.
Das obige ist der detaillierte Inhalt vonWarum aktualisiert die „replace'-Methode von String meinen HTML-Inhalt nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!