2014-01-07 3 views
-1

Я создаю приложение чата, которое будет фильтровать плохие слова, например, задницу. Итак, если тип использования «ваше лицо выглядит как задница», результатом будет «ваше лицо выглядит». кодКак получить слово (String) только?

String msg = e.getMessages(); 

if(msg.contains("ass")) 
{ 
    String aaa = msg.replace("ass", ""); 
    //my code here to show msg 
} 

Таким образом, если пользователь должен набрать слово, которое содержит попку, например, из стекла, мой код будет удалить задницу и стать Gl только. Итак, я хочу знать, как распознавать слово за словом и удалять плохие слова в моем списке?

+16

Это бесчеловечно заменить чью-то задницу ничего. – Maroun

+0

-.- ответить на вопрос – Jeremy

+1

clbuttic problem: http://en.wikipedia.org/wiki/Scunthorpe_problem. И также я надеюсь, что это всего лишь упражнение, так как есть много способов обойти фильтр. – nhahtdh

ответ

4

Если вы хотите заменить только целые слова, вы можете использовать replaceAll(), который принимает регулярное выражение вместо обычной строки и словоразделами (\\b), как это:

String aaa = msg.replaceAll("\\bass\\b", ""); 

Вы можете прочитать больше на границах слов в this excellent tutorial.

+0

Что такое \\ bass \\ b? это символы Юникода? – Jeremy

+1

это регулярное выражение –

+0

это работает !!! Благодарю. Надеюсь, я не хочу, чтобы кто-нибудь говорил задницу сейчас в моей комнате чата – Jeremy

0
String msg = e.getMessages(); 
String[] msgParts = e.getMessages().split(" "); 
StringBuilder filteredMessage = new StringBuilder(); 
for (String msgPart : mstParts){ 
    if (!msgPart.trim().toLower().equals("[string to be filtered]")){ 
     filteredMessage.append(msgPart).append(" "); 
    } 
} 
msg = filteredMessage.toString(); 
// further code continues 
1

Вы можете использовать регулярное выражение, оно очень мощное. например, если вы просто хотите «задница», как слово, которое вы можете использовать "/^ass$/", так что вы можете записать его:

String aaa = msg.replaceAll("/^ass$/", ""); 
Смежные вопросы