Korean Profanity Filter

Korean Profanity Filter 패키지는 문자열을 검사하여 욕설·비속어를 식별할 수 있도록 돕습니다. 정규식을 기반으로 동작하기 때문에 동일한 의미를 가진 다양한 형태의 욕설과 비속어를 효과적으로 필터링할 수 있습니다.


Platform Pub Package License: MIT


닉네임 유효성 검사 예제 사이트

간단한 닉네임 유효성 검사 예제로 욕설·비속어 필터링 기능을 테스트해 보실 수 있습니다!

Installing

  1. 의존성 추가

프로젝트의 pubspec.yaml 파일의 dependencies 섹션에 다음 줄을 추가하세요

dependencies:
  korean_profanity_filter: ^1.0.0
  1. 설치

터미널이나 명령 프롬프트에서 다음 명령을 실행하세요.

$ flutter pub get
  1. 가져오기

이후 dart 소스파일에 import문을 추가하여 패키지를 가져올 수 있습니다.

import 'package:korean_profanity_filter/korean_profanity_filter.dart';

Usage

Korean Profanity Filter 패키지는 String extension 메소드를 제공하여 문자열에서 욕설·비속어를 탐지, 추출, 제거대체할 수 있는 4가지 주요 기능을 제공합니다. 이러한 확장 기능을 통해 사용자는 욕설·비속어 관련 문자열 처리를 더욱 간편하게 수행할 수 있습니다.

1. 탐지하기

const String text = '비속어를 나열합니다 : 시발 슈발 씌발 븅신 ㅅㅂ';
bool hasFWord = text.containsBadWords;

print(hasFWord); // true
method type
containsBadWords bool

주어진 문자열에서 비속어의 존재를 확인하려면 containsBadWords를 사용하세요. 주어진 문자열에 비속어가 있는지 여부를 빠르게 판단할 수 있습니다. 주어진 문자열에 비속어가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다


2. 추출하기

const String text = '비속어를 나열합니다 : 시발 슈발 씌발 븅신 ㅅㅂ';
List<String> fWords = text.getListOfBadWords;

print(fWords); // ['시발', '슈발', '씌발' , '븅신', 'ㅅㅂ']
method type
getListOfBadWords List<String>

문자열에서 비속어를 추출하려면 getListOfBadWords를 활용하세요. 이 함수는 비속어를 찾아내고 해당 비속어들을 리스트로 반환합니다. 만약 비속어가 없다면 빈 리스트를 반환합니다.


3. 지우기

const String text = '비속어를 나열합니다 : 시발 슈발 씌발 븅신 ㅅㅂ';
final String filteredText = text.cleanBadWords;

print(fWords); // 비속어를 나열합니다 :
method type
cleanBadWords String

비속어를 제거하려면 cleanBadWords 함수를 사용하세요. 이 함수는 비속어를 모두 제거한 문자열를 반환합니다.


4. 대체하기

const String text = '비속어를 나열합니다 : 시발 슈발 씌발 븅신 ㅅㅂ';
final String replacedText = text.replaceBadWords('🤬');

print(fWords); // 비속어를 나열합니다 : 🤬 🤬 🤬 🤬
method type
replaceBadWords(String replacement) String

비속어를 다른 문자열로 대체하려면 replaceBadWords를 활용하세요. 이 함수는 비속어를 지정한 문자열로 대체하여 정제된 문자열를 생성합니다.


Customize

해당 패키지는 기본적으로 정규 표현식을 사용하여 욕설·비속어 감지합니다.

ProfanityFilter.addPattern('빵꾸똥꾸|멍청아'); // 추가 정규식 패턴 정의

const String text0 = '야 이 빵꾸똥꾸야';
print(text.containsBadWords); // true

const String text1 = '야 이 멍청아';
print(text1.containsBadWords); // true  

추가로 필터링 로직을 적용하고 싶은 욕설·비속어가 있다면 ProfanityFilteraddPattern 메소드를 사용하여 정규식 패턴을 추가로 정의해 주세요.


Reference

KoreanCursewordRegex 깃허브 레포지터리에서 제공하는 정규식 표현을 참고하였습니다. 패키지에서 사용되는 정규식은 해당 레포지토리의 정규식 패턴을 일부 개선 및 보완한 버전입니다.