这是我的示例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()
,但结果是相同的。
答案 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);