4 个版本 (2 个重大变更)

0.3.0 2022年11月16日
0.2.0 2020年11月24日
0.1.1 2019年9月24日
0.1.0 2019年9月24日

#1012 in 算法

Download history 484/week @ 2024-04-08 1235/week @ 2024-04-15 745/week @ 2024-04-22 485/week @ 2024-04-29 475/week @ 2024-05-06 503/week @ 2024-05-13 534/week @ 2024-05-20 662/week @ 2024-05-27 555/week @ 2024-06-03 645/week @ 2024-06-10 554/week @ 2024-06-17 652/week @ 2024-06-24 524/week @ 2024-07-01 497/week @ 2024-07-08 439/week @ 2024-07-15 646/week @ 2024-07-22

2,175 每月下载量
3 crates 中使用

MIT 许可证

18KB
406

描述

这是一个简单的 Rust 粗口过滤器库。

更多详细信息,请参阅文档


lib.rs:

该包实现了一个简单但功能强大的粗口过滤器。

虽然这个过滤器仍然可以被技术上绕过,但目标是,当粗口通过过滤器时,它几乎与原始单词不相像。这是通过绕过常见的粗口过滤器绕过方法来实现的,比如在字母之间插入空格或特殊字符(如F_U_C_K)或使用类似外观的字符代替其他字符(如SH!T)。

但请注意,这个过滤器远非完美。如果人们 真的 想要诅咒,他们可以绕过这个过滤器。

用法

Censor 枚举是用于审查字符串的主要对象。它本质上是一组要过滤的单词。包含大多数人认为的粗口单词的 Standard 变体是一个好的基础。可以通过 ++= 运算符添加更多集和单个单词,可以通过 --= 运算符删除集和单词。

use censor::*;

let censor = Censor::Standard;

// Use `Censor::check` to check if a string contains a profanity
assert!(censor.check("fuck"));
assert!(censor.check("FUCK"));
assert!(censor.check("FuCk"));
assert!(censor.check("fμ¢κ"));
assert!(censor.check("f!u!c!k"));
assert!(censor.check("F_u c_K"));
assert!(censor.check("fuuuuuuuck"));

assert!(!censor.check("fluff truck"));
assert!(!censor.check("fukushima"));

// Use `Censor::censor` to censor a string with asterisks
assert_eq!("*_*_*_*_*", censor.censor("₱_û_$_$_¥"));
assert_eq!("**** that ****, dude", censor.censor("fuck that shit, dude"));
assert_eq!("******* yoouuu", censor.censor("fuuuuck yoouuu"));

// Use `Censor::replace` to replace censored words with any grawlix string
assert_eq!("What the !@#$?", censor.replace("What the fuck?", "!@#$%"));

// You can combine `Censor`s and add your own words
let censor = Standard + Zealous + Sex + "dong";

assert_eq!(
"Woops, I dropped my monster ******, that I use for my magnum ****",
censor.censor("Woops, I dropped my monster condom, that I use for my magnum dong")
);

// You can remove words from `Censor`s too
let censor = Standard - "ass";
assert!(!censor.check("I don't care if people say 'ass'"));

// Overlapping censored words are fully censored
let censor = Standard + Sex;
assert_eq!("**********", censor.censor("shititties"));
assert_eq!("*************", censor.censor("blowjoboobies"))

依赖项

~49KB