在C#中解析"坏"字的字符串的最佳方法是什么?

Cha*_*eus 7 c# filter profanity

我想的是:

foreach (var word in paragraph.split(' ')) {
  if (badWordArray.Contains(word) {
    // do something about it
  }
}
Run Code Online (Sandbox Code Playgroud)

但我确信有更好的方法.

提前致谢!

UPDATE 我不希望自动...删除淫秽我的web应用程序,我想如果我认为"糟糕"一词是用来通知.然后我会自己检查以确保它是合法的.一种自动标记系统.

小智 16

虽然你的方式有效,但可能有点耗费时间.对于之前的SO问题,这里有一个很好的回答.虽然问题是谈论PHP而不是C#,但我认为它可以轻松移植.

编辑以添加示例代码:

public string FilterWords(string inputWords) {
    Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
    return wordFilter.Replace(inputWords, "<3");
}
Run Code Online (Sandbox Code Playgroud)

这应该或多或少对你有用.

编辑以回答OP澄清:

我不打算自动删除猥亵...对于我的网络应用程序,如果使用我认为"坏"的单词,我希望收到通知.

就像上面的替换部分一样,你可以看到是否匹配如此:

public bool HasBadWords(string inputWords) {
    Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
    return wordFilter.IsMatch(inputWords);
}
Run Code Online (Sandbox Code Playgroud)

true如果传递给它的字符串包含列表中的任何单词,它将返回.

  • 如果你要这样做,**不要忘记`\ b`**.这是一个克隆错误. (11认同)