C# 有效地从用户评论中删除顽皮的词语

C# 有效地从用户评论中删除顽皮的词语,c#,asp.net,sql,C#,Asp.net,Sql,我有一个ASP.NET应用程序,可以接受用户的评论,并将其保存在SQL数据库中。我想确保删除任何“顽皮”的字眼,这样我就能让我的应用程序保持体面。问题是我发现有很多这样的词 我的问题是,进行这种处理最有效的方法是什么?我是否应该在SQL中有一个表并编写一个执行该操作的存储过程?我应该在web服务器的内存中使用c#和Regex吗?还有其他选择吗?还有其他人成功地完成了这种大规模的文本扫描吗?如果是,什么有效?这是一项徒劳的任务。如果人们想发誓,那么他们会开始输入像fuck和sh*t这样的东西 没有

我有一个ASP.NET应用程序,可以接受用户的评论,并将其保存在SQL数据库中。我想确保删除任何“顽皮”的字眼,这样我就能让我的应用程序保持体面。问题是我发现有很多这样的词


我的问题是,进行这种处理最有效的方法是什么?我是否应该在SQL中有一个表并编写一个执行该操作的存储过程?我应该在web服务器的内存中使用c#和Regex吗?还有其他选择吗?还有其他人成功地完成了这种大规模的文本扫描吗?如果是,什么有效?

这是一项徒劳的任务。如果人们想发誓,那么他们会开始输入像
fuck
sh*t
这样的东西

没有什么可以替代有效的节制。任何其他内容都可能在页面上留下错误


我记得某个地方引用过一句关于社会问题技术解决方案的话,但我现在无法找到它的来源,因为已经有一些Perl模块可以为您完成所有这些


这里有一些要考虑的事情:

  • 您希望以后能够从黑名单中添加或删除单词吗?如果是这样的话,只在显示消息之前这样做可能有意义,但要存储原始消息
  • 您是否希望稍后获得该邮件的副本(例如出于法律原因或客户支持)?然后,在数据库中保持消息不变也是有意义的
因此,我会将消息保存在数据库中,并仅在呈现之前对其进行解析。在我看来,最有效的方法是:

  • 将黑名单保存在数据库中的索引列(小写)中,并通过过滤黑名单的存储过程返回注释
  • 在某些数据结构中保持黑名单小写,以便在中间层的内存中进行高效访问(例如字典)
  • 在这两种情况下,您只需浏览每个注释并对其进行过滤。后一种方法更容易实现,但这意味着您必须在内存中保留一个列表,当您有一个非常大的黑名单时,该列表将停止运行

    (实际上,我认为使用正则表达式没有任何意义。)


    在代码中试图解决这个问题应该是很尴尬的。

    加雷斯,你说得很对。我太天真了,以为人们只会输入好的正则表达式友好的调皮话。。。谢谢你给我的链接,这让我笑了。不过,我也同意加雷斯的观点,他只是忽略了这一点,而采取温和的态度。