java字符串替换所有

时间:2012-08-29 20:49:21

标签: java string replace

我有一个包含字符串对的二维数组。如果找到一个字符串,则应将其替换为该字符串。

代码:

 for (int i = 0; i < pairs.length; i++) {
        if (name.contains(pairs[i][0])) {
            name.replaceAll(pairs[i][0], abbr[i][1]);
        }
    }

它不是替换字符串。错误是什么?

3 个答案:

答案 0 :(得分:4)

您忽略了分配replaceAll的结果,因此修改将丢失。

也许您希望将修改后的字符串保留为name

for (int i = 0; i < pairs.length; i++) {
    if (name.contains(pairs[i][0])) {
        name = name.replaceAll(pairs[i][0], abbr[i][1]);
    }
}

请注意,java String个对象是不可变的,因此调用name.replaceAll 不会修改name,它会返回 new String进行了修改。

答案 1 :(得分:2)

字符串是不可变的。

name.replaceAll(pairs[i][0], abbr[i][1]);

创建一个新的String(它不会修改“name”字符串)

尝试

name = name.replaceAll(pairs[i][0], abbr[i][1]);

答案 2 :(得分:0)

正在创建字符串的修改版本,但它的返回值正在丢失。

name = name.replaceAll(pairs [i] [0],abbr [i] [1]);

应该有用。