Java 字符串替换问题疑难解答
使用 Java 字符串时,请务必记住字符串是不可变的。这意味着对字符串所做的任何更改都会创建一个新的字符串对象,而不是修改现有的字符串对象。
考虑以下代码:
String delimiter = "\*\*"; String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; Map<String, String> mp = new HashMap<String, String>(); mp.put("USERNAME", "User A"); mp.put("PASSWORD", "B"); for (Entry<String, String> entry : mp.entrySet()) { html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue()); }
您可能希望此代码替换“ HTML 字符串中的“USERNAME”和“PASSWORD”占位符以及地图中的值。但是,这种情况不会发生,因为 Replace() 方法不会修改现有字符串。相反,它会创建一个带有替换内容的新字符串。
要解决此问题,您需要将新字符串分配给 html 变量:
html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
通过这样做,您'将创建一个包含替换内容的新字符串并将其分配给 html 引用。这样,更改将反映在原始 html 字符串中。
以上是为什么我的 Java 字符串替换方法不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!