我想过滤一些不好的词,比如'asshole',但你可以通过说'asssssshole'或'asshoooole'来绕过这个词
这是我目前的代码。
string Word = "asshole";
if (Comment.Contains(Word)
//block the comment from being posted
我将如何检查消息中是否有多个额外的字母添加到禁止的单词上,而无需为拼写"混蛋"的每种方式创建数百种不同的规则。
使用声音可能会取得部分成功。 尝试将您的变体放入 https://www.functions-online.com/soundex.html,它们都返回相同的值A240
,甚至a*s*h*o*l*e
。 不幸的是,它不适用于a$$hole
,但您可以在测试之前提出一些简单的替换来运行。
在线找到 C# 实现应该很容易。
用它做一个正则表达式并检查匹配项:
//using System.Text.RegularExpressions;
string word = "asshole";
//add a '+' after each letter to make it find any number of it
string pattern = string.Join("+", word.ToCharArray());
//pattern is "a+s+s+h+o+l+e"
if(Regex.IsMatch(comment, pattern))
{
//do something
}