Reemplace varias palabras en una cadena de una lista de palabras

Tengo una lista de palabras:

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

y tengo un texto (generalmente corto, máximo 250 palabras), que necesito QUITAR todo elBAD_WORDS en eso.

He intentado esto:

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

pero, si el texto comienza o termina con una mala palabra, no se eliminará. Lo hice con los espacios, por lo que no coincidirá con palabras parciales, por ejemplo, "oxxx" no debería eliminarse, ya que no coincide exactamente con las MALAS PALABRAS.

¿Alguien me puede aconsejar sobre esto?

Respuestas a la pregunta(7)

Su respuesta a la pregunta