【发布时间】:2019-11-13 23:44:51
【问题描述】:
我有一个单词列表:
string[] BAD_WORDS = { "xxx", "o2o" } // My list is actually a lot bigger about 100 words
我有一些文本(通常很短,最多 250 个字),我需要删除其中的所有 BAD_WORDS。
我试过这个:
foreach (var word in BAD_WORDS)
{
string w = string.Format(" {0} ", word);
if (input.Contains(w))
{
while (input.Contains(w))
{
input = input.Replace(w, " ");
}
}
}
但是,如果文本以坏词开头或结尾,则不会被删除。 我是用空格做的,所以它不会匹配部分单词,例如“oxxx”不应该被删除,因为它与 BAD WORDS 不完全匹配。
谁能给我建议?
【问题讨论】:
-
看起来像是正则表达式的工作。
-
你为什么要加入这行
string w = string.Format(" {0} ", word);? -
您的任务是什么,您的代码看起来不错?只需删除 if 并做一个开始和结束。
-
@Nikhil Agrawal:前后放置空格。例如,如果你只保留这个词,它也会匹配 oxxx。
-
您的
if是不必要的。最好从while开始,以避免第一次检查两次。