Логический код Java - удалить текст из строки - PullRequest
2 голосов
/ 23 декабря 2010

Я хочу удалить любое предложение "счастлив" из очень большого текста, игнорируя чувствительность к регистру. Вот некоторые из этих больших текстовых предложений:

  1. «Она счастлива. Мне это нравится».

  2. "Его счастливый сын"

  3. "Он счастлив весь день"

  4. "Таша счастлива"

  5. «Выберите одно из следующего: грустно-счастливо-плачет»

Мой начальный код:

String largeText = "....";  // The very large text here.
String removeText = "is happy";
largeText = largeText.replaceAll( "(?i)" + removeText , "" ); 

Этот код будет хорошо работать с предложением № 1, 3, 4, 5. Но я не хочу удалять его из предложения № 2, поскольку оно имеет другое значение. Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 23 декабря 2010

Используйте \b вокруг вашего шаблона для определения границ слов. то есть:

String largeText = "....";  // The very large text here.
String removeText = "is happy";
largeText = largeText.replaceAll( "(?i)\\b" + removeText + "\\b" , "" ); 
0 голосов
/ 23 декабря 2010

Возможно, вы захотите взглянуть на атомные утверждения нулевой ширины - шаблоны, которые соответствуют позициям внутри строки (например, границы слова), а не самому тексту.

Этот вопрос был ранее задан; см. эту ссылку для получения дополнительной информации:

java String.replaceAll вопрос регулярных выражений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...