jsp에서 controller로 vo던 String형태던 문장(혹은 단어,문단)을 보냈을 때
글 속에 비속어 및 금칙어를 * 로 바꾸는 로직
public String wordFilter(String word) throws Exception{
//이 부분에서 비속어 및 금칙어를 slang이란 변수에 담아준다.
//db에서 조회해 가져오는 값의 형태는 다음과 같다
// -> "바보|멍청이|돌아이...."
//이런식으로 단어 사이에 |(₩+shift) 로 구분을 해줘서 변수에 담는다.
String slang = boardDAO.getSlangList();
//받아온 값을 확인해본다
System.out.println("비속어:::: "+slang);
//Pattern과 Matcher는 자바 내장 플러그인 인것 같다.(따로 설정은 안해줌)
Pattern p = Pattern.compile(slang ,Pattern.CASE_INSENSITIVE); //비속어 세팅
Matcher m = p.matcher(word); //비교할 문장
//한글자씩 가져와서 걸러내기위해 버퍼 선언(?) 이라고 이해하는중
StringBuffer sb = new StringBuffer();
while(m.find()) {
//Matcher에 있는 문장에서 비속어를 걸러서 *로 바꿔주는 로직
m.appendReplacement(sb, maskWord(m.group()));
}
m.appendTail(sb);
return sb.toString();
}
//위 while문에 들어있는 함수
public static String maskWord(String word) {
StringBuffer buff = new StringBuffer();
//단어를 한글자씩 쪼개서 담는 부분
char[] ch = word.toCharArray();
for(int i = 0; i<ch.length; i++) {
//포문 돌려서 *로 바꿔주는 부분
//여기서 ㅈ+ㅗ+ㅈ 와 같은 한글자 비속어를 거르기 위해
//length범위를 조절했다.
if(i<1) {
if(word.toCharArray().length<2)
buff.append("*");
else
buff.append(ch[i]);
}else {
buff.append("*");
}
}
return buff.toString();
}
//위에서 만든 함수로 비속어를 *처리 한후 return값을 변수에 담아줘서
String postCon = wordFilter(boardVO.getPostCon());
//vo에 setting 혹은 model로 바로 넘겨도 됨
boardVO.setPostCon(postCon);
'Spring Framework' 카테고리의 다른 글
[java]Controller에서 ajax로 값 리턴하는법 (0) | 2022.04.05 |
---|---|
[JAVA]textarea에 개행 적용하기 (0) | 2022.04.04 |
[PaginationInfo] 게시판 및 여러 리스트들 페이징 처리하기(하단 결론有) (0) | 2022.03.25 |