Java 字符串替换难题
在尝试更新字符串中的值时,提供的代码使用 String 的替换方法:
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; html.replace("**USERNAME**", "User A"); html.replace("**PASSWORD**", "B");
然而,这种方法并没有达到预期的效果。为什么会这样?
字符串不可变性
理解这个问题的关键在于字符串的不可变性。与 Java 中的其他一些对象不同,字符串不能就地修改。任何看似改变 String 的操作,例如替换,实际上都会创建一个新的 String 对象。
在给定的代码中,replace 调用创建新的 String 对象,但引用 html 继续指向原始 String 。这意味着原始 HTML 内容不会受到替换尝试的影响。
解决方案:拥抱重新分配
要克服这一不变性障碍,您必须将引用 html 重新分配给通过替换创建的新字符串。这是更正后的代码:
html = html.replace("**USERNAME**", "User A"); html = html.replace("**PASSWORD**", "B");
通过在每次替换调用后重新分配 html,您可以确保它指向包含所需替换的更新后的字符串。此方法承认并解决 String 的不变性,以实现广受欢迎的替换。
以上是为什么 String 的 `replace` 方法不更新我的 HTML 内容?的详细内容。更多信息请关注PHP中文网其他相关文章!