Удалить конкретное слово из строки

Я пытаюсь удалить определенное слово из определенной строки, используя функциюreplace() или жеreplaceAll() но они удаляют все вхождения этого слова, даже если оно является частью другого слова!

Example:

String content = "is not like is, but mistakes are common";
content = content.replace("is", "");

output: "not like , but mtakes are common"

desired output: "not like , but mistakes are common"

Как я могу заменить только целые слова из строки?

 UNECS19 мая 2012 г., 03:04
Вы должны использовать заменить? Со строкой? Нужно ли искать разные строки для замены?
 Luiggi Mendoza19 мая 2012 г., 03:06
Вы должны добавить, какую часть всей вашей строки вы хотите заменить, возможно, вы можете использовать регулярное выражение, чтобы сделать работу

Ответы на вопрос(3)

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

 19 мая 2012 г., 03:10
@HovercraftFullOfEels К сожалению, не проверял. Отредактировано после тестирования. :)
 19 мая 2012 г., 03:08
вам не нужноreplaceAll(...) неreplace(...) использовать магию регулярных выражений?
Решение Вопроса

String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");

Помните, что вам нужно использоватьreplaceAll(...) использовать регулярные выражения, а неreplace(...)

\\b gives you the word boundaries \\s* sops up any white space on either side of the word being removed (if you want to remove this too).
 28 июн. 2014 г., 09:16
Осталась еще одна проблема. Если предложение было «собака - это кошка», этот код удаляет пробел с обеих сторон слова «-». и сделайте это "dogcat". Я думаю, что лучше написатьcontent = content.replaceAll(regex," ") а затем обрезать пространство на концах

является & quot; & quot; & Quot ;. С пробелом до и после, заменяется одним пробелом.

Обновить:

Чтобы заставить это работать для первого "is" в предложении также сделайте другую замену слова "is" для & quot; & quot ;. Замена первого - это первый пробел с пустой строкой.

 19 мая 2012 г., 03:03
не будет работать для первого "является" в предложении.
 19 мая 2012 г., 03:05
Поскольку вам, возможно, придется обрабатывать этот случай специально из-за заглавной буквы, возможно, несколькоreplaceAll() звонки будут работать? ВключаяreplaceAll(" is\.","."); или что-нибудь, чтобы поймать последнего ...
 19 мая 2012 г., 03:08
Вы оба правы. Спасибо. Я обновил ответ, чтобы включить этот случай. Если строка заканчивается на & quot; Это & quot ;, этот регистр также должен быть добавлен, добавляя в общей сложности 3. Кроме того, как и добавил Роб, верхние регистры также должны рассматриваться в дополнительных вызовах replaceAll.

Ваш ответ на вопрос