猿问

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());

}

这应该通常取代这两个字符串,但事实并非如此。有没有人有想法?


噜噜哒
浏览 382回答 3
3回答

慕桂英3389331

String是不可变的,这意味着html引用不会更改,而replace方法返回一个您必须分配的新String对象。html&nbsp;=&nbsp;html.replace(delimiter&nbsp;+&nbsp;entry.getKey()+&nbsp;delimiter,&nbsp;entry.getValue());

萧十郎

你不需要逃避*角色。replace和之间的区别replaceAll是replace自动转义任何正则表达式元字符:String&nbsp;delimiter&nbsp;=&nbsp;"**";

慕的地10843

比喻:如果桌面上有不可变文件。要进行一些更改,请执行复制和替换。除非您有备份,否则会导致您无法访问旧文件的状态。在大多数计算机语言中Java,以同样的方式JavaScript,python并且C#该replace方法不会替换/修改String。它仅对前一个String进行操作,并返回包含所有更改的新String。现在,如果您确实要存储更改,则需要在同一变量(如果您的情况允许)或新变量中获取返回的String。
随时随地看视频慕课网APP

相关分类

Java
我要回答