0

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

编码:

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

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

4

3 回答 3

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]);
    }
}

请注意,javaString对象是不可变的,因此调用name.replaceAll 不会修改name,它会返回一个带有修改的 String对象。

于 2012-08-29T20:50:46.463 回答
2

字符串是不可变的。

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

创建一个新字符串(它不会修改“名称”字符串)

尝试

name = name.replaceAll(pairs[i][0], abbr[i][1]);
于 2012-08-29T20:51:17.683 回答
0

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

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

应该管用。

于 2012-08-29T20:53:15.187 回答