2014-01-07 3 views
-1

나는 예를 들어 나쁜 단어, 엉덩이를 필터링하는 채팅 응용 프로그램을 만드는 오전. 그래서, "당신의 얼굴이 엉덩이와 같이 보입니다"라고 입력하면 결과가 "당신의 얼굴처럼 보입니다". 사용자가 엉덩이를 포함하는 단어, 예를 들어 유리, 내 코드가 엉덩이를 제거하고 단지를 들어, gl 될 것를 입력하면 코드는, 그래서단어 (문자열) 만 가져 오는 방법은 무엇입니까?

String msg = e.getMessages(); 

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

입니다. 그래서 단어별로 단어를 탐지하고 목록에서 나쁜 단어를 제거하는 방법을 알고 싶습니다.

+16

그것은 아무것도 가진 사람의 엉덩이를 대체하는 비인간적이다. – Maroun

+0

-.- 질문 – Jeremy

+1

clbuttic 문제에 답 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$/", ""); 
관련 문제