【发布时间】:2016-12-27 15:47:41
【问题描述】:
所以我一直在尝试并试图让这个脚本工作,但它的背后一直很痛苦。基本上我想检查句子,看看它是否包含禁用词。如果一个给定的句子包含超过 3 个单词(等于或更多),那么我希望它告诉我,以便我可以发送警报。
到目前为止我所拥有的:
public bool CheckSentence(string Message)
{
var count = 0;
foreach (WordFilter Filter in this._filteredWords.ToList())
{
if (Message.Contains(Filter.Word) && Filter.IsSentence)
{
count++;
}
}
return count >= 3;
}
然后我试图抓住它,如果句子确实包含超过 3 个,它会提醒这个人:
if (PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckSentence(Message.ToLower()))
{
Session.SendNotification("Something you've said has made our ears tingle! ");
}
但我觉得我在某个地方出错了,就像它实际上并没有阅读句子并计算使用了多少次禁用词。
字符串是Message,禁用词列表是Filter.Word,因为我不希望所有词(因为我的过滤器用***替换其他词)都包含在句子过滤器中,我'还向表 Filter.IsSentence(1 或 0)添加了一列。这将检查该词是否在过滤器中,以及它是否也包含在“IsSentence”过滤器中。
从我上面的脚本中,我觉得它实际上并没有计算字符串中有多少被禁止的单词?假设我的字符串是:
Join this website today, free credits and much more! www.site.com
在数据库中,我会添加以下单词:
join, website, free, credits, .com, www.
在这些单词中,只有join, website, free and credits 会被检查是否包含在句子中。由于一个句子中有 4 个禁用词(它们也是 IsSentence),因此要运行第二批代码以向它们发送通知。
【问题讨论】:
-
@PeterDennisBartok 如果您阅读它,您会看到它正在请求函数 VIA:
Message.ToLower()
标签: c#