해당 주제에 관심을 가지게 된건
금지어 체크를 만들면서 이다.
정말 간단한 욕설 체크는 해당 문장에 욕설이 있으면 체크를 하면 되지만 욕설 사이 사이에
공백이라던지 특수 문자라던지 또는 조합되지 않은 한글 (ex _ 'ㅁ' ) 등이 사이사이에 있을경우
금지어와의 비교가 애매 하다
그렇다고 해당 문장에 욕설에 속하는 글자가 포함되어 있다고 무조건 욕설로 처리 할수도 없다.
(ex_ "금일 패치는 15:00 에 해주시기 바랍니다" 이 문장에서 '바다'라는 단어가 욕설이라고 치면 아무 문제 없는 문장 이지만 욕설 처리가 될수있다 )
따라서 문장의 의미없는 글자 들을 제거 할 필요가 있다.
1. 공백을 및 숫자 제거
( using 문 필요 : using System.Text.RegularExpressions; )
@"\d" 의 경우 숫자들을 Replace 해준다
@"\s" 의 경우 공백들을 Replace 해준다
이 얼마나 편한가... 넣는 인자값에 대한 설명 및 이외의 더 많은 인자값들의 대한건
아래 주소에서 참조 하기 바란다
물론 영어다....
http://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx
제일 좋은 방법은 테스트 코드를 짜고 인자값을 바꿔 가며 테스트 해보면된다.
2. 특수 문자 및 조합되지 않은 문자를 검출하자.
해당 소스중 'node'는 체크를 할 char 이다
해당 문자의 형식을 판별하여 어떤 형식에 속하는지를 판단 할수 있다. 대충 보면 해당 카테고리가 어떤걸 의미하는지 알수있다.
OpenPunctuation 같은 경우 괄호 (, {, [ 등등의 괄호를 여는 문자들을 검출해낸다.
자세한것은 아래 사이트에서 참조하면된다.
http://www.fileformat.info/info/unicode/category/Ps/index.
해당 사이트에 가면 여러개의 카테고리들이 있는대 각각 눌러보면 해당 카테고리에 해당되는 문자들을 볼수있다
하단의 List를 누르면 보일 것이다. ( 'ㅁ' 형태로 된 문자들은 우측의 View 를 누르면 자세히 보일 겄이다)
조합되지 않은 한글의 경우... 이 정보를 어디서 얻었는지 잊어 먹어 버렸다.
const int _start_mo = 12592;
const int _end_mo = 12660;
현재는 위의 값을 쓰고있는대 체크할 char를 int 로 컨버팅 한후 정수값이 위의 두 값 사이 일경우
조합되지 않은 글자 라고 한다 이 값에 대한 근거는
구글링 해보시길...
그렇게 오래전에 짠 코드는 아닌대 까먹어버렸다...
쓰고나니 너무 대충 썼나...
나중에 시간나면 글을 수정 해야 할지도 모르겠다
아무튼 여기서 끝!