replaceAll粘贴不必要的额外字符串的一部分

时间:2018-11-02 13:41:42

标签: java replaceall

这是我的示例Java代码:

String oldContent = "Book 1;Author 1;11|11\n" +
        "Book 2;Author 2;1|1\n" +
        "Book 3;Author 3;1|1\n" +
        "Book 4;Author 4;1|1\n" +
        "Book 5;Author 5;1|1\n";

String old = "Book 1;Author 1;11";
String newS = "Book 1;Author 1;12|12";

String content = oldContent.replace(old,newS);

System.out.println(content);

我正在尝试用新的字符串部分(newS)更新oldContent(旧)中的部分字符串。结果应该是:

Book 1;Author 1;12|12
Book 2;Author 2;1|1
Book 3;Author 3;1|1
Book 4;Author 4;1|1
Book 5;Author 5;1|1

但实际上是:

Book 1;Author 1;12|12|11
Book 2;Author 2;1|1
Book 3;Author 3;1|1
Book 4;Author 4;1|1
Book 5;Author 5;1|1

使用这些额外的|11。有人可以解释一下它是如何工作的,为什么?我一直在尝试replace()replaceAll(),但结果是相同的。

2 个答案:

答案 0 :(得分:2)

您将Book 1;Author 1;11|11序列替换为Book 1;Autor 1;12|12序列,但是第一行以1:11|11结尾。请注意,在行尾有多余的|11,它不会被处理,并将附加到Book 1;Autor 1;12|12上。

要完全替换第一行,您需要:

String old = "Book 1;Autor 1;11|11";
String newS = "Book 1;Autor 1;12|12";
String content = oldContent.replace(old, newS);

答案 1 :(得分:1)

请注意!您在Author字中有错字:

String old = "Book 1;Author 1;11|11";
String newS = "Book 1;Author 1;12|12";
String content = oldContent.replace(old, newS);