replaceAll вставляет часть ненужной лишней строки - PullRequest
0 голосов
/ 02 ноября 2018

Это мой пример кода 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);

Я пытаюсь обновить часть строки в oldContent (old) новой частью строки (newS). Результат должен быть:

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 голосов
/ 02 ноября 2018

Обратите внимание! У вас есть опечатка в Author слове:

String old = "Book 1;Author 1;11|11";
String newS = "Book 1;Author 1;12|12";
String content = oldContent.replace(old, newS);
0 голосов
/ 02 ноября 2018

Вы заменяете последовательность 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...