Substituir várias palavras em uma string de uma lista de palavras

Eu tenho uma lista de palavras:

string[] BAD_WORDS = { "xxx", "o2o" } // My list is actually a lot bigger about 100 words

e eu tenho algum texto (geralmente curto, max 250 palavras), que eu preciso para remover todos osBAD_WORDS nisso.

Eu tentei isso:

    foreach (var word in BAD_WORDS)
    {
        string w = string.Format(" {0} ", word);
        if (input.Contains(w))
        {
            while (input.Contains(w))
            {
                input = input.Replace(w, " ");
            }
        }
    }

mas, se o texto começar ou terminar com uma palavra ruim, ele não será removido. Eu fiz isso com os espaços, por isso não irá coincidir com palavras parciais, por exemplo "oxxx" não deve ser removido, uma vez que não é uma correspondência exata para as palavras BAD.

Alguém pode me dar conselhos sobre isso?

questionAnswers(7)

yourAnswerToTheQuestion