从单词列表中替换字符串中的多个单词

Dem*_*tic 2 c# string replace

我有一个单词列表:

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, " ");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果文本以坏词开头或结尾,则不会删除.我用空格做了,所以它不会匹配部分单词,例如"oxxx"不应该删除,因为它与BAD WORDS不完全匹配.

有人可以就此提出建议吗?

sha*_*non 15

string cleaned = Regex.Replace(input, "\\b" + string.Join("\\b|\\b",BAD_WORDS) + "\\b", "")
Run Code Online (Sandbox Code Playgroud)


Jam*_*nes 5

这对Linq来说是一个很好的任务,也是Split方法.试试这个:

return string.Join(" ", input.Split(' ').Where(w => !BAD_WORDS.Contains(w)));
Run Code Online (Sandbox Code Playgroud)