当我得到一个包含⋍
或𖫻
等常用字符的HTML文件时,我想用子弹替换它们。所以我写了这个方法:
public String replaceAmps(String initial)
{
// This list will contain all the &s; to replace.
ArrayList<String> amps = new ArrayList<String>();
String res = initial;
int index = initial.indexOf("&");
// Get all the indexes of &.
while (index >= 0)
{
StringBuilder stb = new StringBuilder("&");
// Create a String until the next ";", for example &#1091;<- this one
for(int i = index+5 ; initial.charAt(i) != ';' ; i++) stb.append(initial.charAt(i));
stb.append(";");
// Add the amp if needed in the list.
if(!amps.contains(stb.toString())) amps.add(stb.toString());
index = initial.indexOf("&", index + 1);
}
// Replace the Strings from the list with a bullet.
for(String s : amps) res.replace(s, "•");
return res;
}
我正确地获取了列表中的所有放大器,但替换不起作用。为什么?谢谢你的帮助。
答案 0 :(得分:8)
字符串是不可变的; replace
方法返回新的String
作为替换的结果,不会修改res
。尝试
for(String s : amps) res = res.replace(s, "•");