String#replace在我的方法中不起作用

时间:2013-03-19 23:37:17

标签: java string replace

当我得到一个包含⋍𖫻等常用字符的HTML文件时,我想用子弹替换它们。所以我写了这个方法:

public String replaceAmps(String initial)
{
    // This list will contain all the &amps; to replace.
    ArrayList<String> amps = new ArrayList<String>();
    String res = initial;
    int index = initial.indexOf("&amp;");
    // Get all the indexes of &amp.
    while (index >= 0) 
    {
        StringBuilder stb = new StringBuilder("&amp;");
        // Create a String until the next ";", for example &amp;#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("&amp;", index + 1);
    }
    // Replace the Strings from the list with a bullet.
    for(String s : amps) res.replace(s, "•");
    return res;
}

我正确地获取了列表中的所有放大器,但替换不起作用。为什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:8)

字符串是不可变的; replace方法返回新的String作为替换的结果,不会修改res。尝试

for(String s : amps) res = res.replace(s, "•");