c# - 如何从不良词中过滤出richtextbox?

标签 c# .net

我想知道如何在文本更改事件中自动过滤掉 richtextbox 中的坏词。我正在通过使用 ip 在计算机之间创建连接来开发本地聊天软件,但我需要对其进行过滤,例如

Richtextbox.text = "oh s***";

Richtextbox 将弹出一个消息框提醒用户并禁用输入 5 秒,然后再次启用。

最佳答案

有趣的问题!我想,类似的东西:

  using System.Text.RegularExpressions;

  ...
  HashSet<String> badWords = new HashSet<string>(StringComparer.OrdinalIgnoreCase) {
    "bad",
    "words",
  };

  Boolean result = YourRichTextBox
    .Lines
    .Any(line => Regex
       .Split(line, @"\W")
       .Any(word => badWords.Contains(word)));

请注意,坏词可以从大写字母、大写字母等开始。另一个困难是我们必须检测“BAD!”,但不能检测“baddy”.

提醒用户只需将代码放入TextChanged事件处理:

  private void YourRichTextBox_TextChanged(object sender, EventArgs e) {
    RichTextBox YourRichTextBox = sender as RichTextBox;

    Boolean result = ... // See code above

    if (result) {
      MessageBox.Show("You must not be that rude!", Text, MessageBoxButtons.OK);
      ...
    }
  }

关于c# - 如何从不良词中过滤出richtextbox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334864/

相关文章:

c# - 绑定(bind)到数据库的自定义通用 IEnumerator

c# - 系统托盘工具提示格式

c# - 为什么此处的Visual Studio无法解决List?

c# - JsonDocument 获取 JSON 字符串

c# - 如何删除指定字符之间的单词?

c# - 如何消除 WPF 输出窗口中的绑定(bind) “Information” - 无法使用绑定(bind)检索值

.net - 将解决方案添加到源代码管理对 VS 2017 中的 Git 没有任何作用

c# - 仅当 NHibernate 不存在表时才使用 Sql Server Compact 3.5 创建表

c# - 有没有办法在 Visual Studio 中不创建显式 EventHandler 委托(delegate)?

c# - ASP.NET Core 2.1 EF - 一对一关系仅在关系的一侧生成外键约束