Java-String-Replace-Methode verhält sich unerwartet
In Java ist die String-Replace-Methode eine häufig verwendete Funktion zum Ersetzen von Vorkommen eines Teilstrings durch einen neue Saite. Manchmal stoßen Benutzer jedoch auf Situationen, in denen die Ersetzungsmethode scheinbar nicht richtig funktioniert.
Beachten Sie den folgenden Codeausschnitt:
String delimiter = "\*\*"; String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; Map<String, String> mp = new HashMap<>(); mp.put("USERNAME", "User A"); mp.put("PASSWORD", "B"); for (Entry<String, String> entry : mp.entrySet()) { html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue()); }
In diesem Code besteht das Ziel darin, die Platzhalter für USERNAME und zu ersetzen PASSWORD im HTML-String mit den entsprechenden Werten aus der bereitgestellten Karte. Bei der Ausführung bleibt jedoch der ursprüngliche HTML-String html unberührt, was zu 困惑ion führt.
Das Problem verstehen
Um das Problem zu verstehen, müssen wir uns daran erinnern, dass Strings in Java sind unveränderlich, das heißt, sie können nicht vor Ort geändert werden. Die Ersetzungsmethode für Strings gibt ein neues String-Objekt zurück, das die geänderten Werte enthält. In unserem Code erfassen wir nicht das Ergebnis der Ersetzungsmethode und weisen es der ursprünglichen HTML-Variablen zurück. Daher werden die Änderungen nicht auf die ursprüngliche Zeichenfolge angewendet.
Lösung
Um dieses Problem zu beheben, müssen wir das Ergebnis der Ersetzungsmethode erfassen und Weisen Sie es wieder der HTML-Variablen zu:
html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
Mit dieser Änderung aktualisiert der Code nun korrekt die HTML-Zeichenfolge mit den gewünschten Ersatzwerten.
Das obige ist der detaillierte Inhalt vonWarum aktualisiert meine Java-String-Replace-Methode den String nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!