Просто для полноты, другой способ сделать это с помощью replaceAll()
String author="{J. Park and J. N. James and Q. Li and Y. Xu and W. Huang}";
author = author.replaceAll( " and ", " & " );
. Вы получите тот же результат. Обратите внимание на пробелы вокруг " and "
. Это мешает вам заменить слово, подобное «Rosaland», на «Rosal &». Пробелы вокруг " & "
должны быть такими же, как и раньше. Без них вы получите "J. Park&J. N. James"
.
Просто к вашему сведению: "\b"
- инструмент для программистов. Используемая им «граница слова» включает в себя типичные «слова программиста». Быстрая проверка говорит, что она соответствует чему-либо, что не является [A-Za-z0-9_], поэтому, если у вас есть имя, такое как «Johhan Fu-and-leson», оно будет соответствовать «-» и заменить его. Очень маловероятно, но что-то нужно иметь в виду.
Кроме того, такая строка, как "Lindy Harlaown_and Fate", _ не будет соответствовать, и замена не произойдет. Снова кое-что, что нужно иметь в виду.
Регулярное выражение не волшебник c и не читает ваши мысли, и его соответствие по умолчанию может не соответствовать вашим конкретным потребностям.