Pregunta

Estoy pensando en algo como:

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

Pero estoy seguro de que hay una mejor manera.

¡Gracias de antemano!

actualización No estoy buscando eliminar obscenidades automáticamente ... Para mi aplicación web, quiero ser notificado si se usa una palabra que considero "mal".Entonces lo revisaré para asegurarme de que sea legítimo.Un sistema de bandera automática de clases.

¿Fue útil?

Solución

Mientras lo que trabajas funciona, puede llevar un poco de tiempo.Hay una Respuesta maravillosa aquí para una pregunta anterior.Aunque la pregunta habla sobre PHP en lugar de C #, creo que puede ser fácilmente portado.

Editar para agregar código de muestra:

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

Eso debería funcionar para usted, más o menos.

Editar para responder la aclaración OP:

No estoy buscando eliminar obscenidades automáticamente ... Para mi aplicación web, quiero ser notificado si se usa una palabra que considero "mal".

Mucho como la parte de reemplazo anterior, puede ver si algo coincide como así:

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

devolverá true si la cadena que pasó a él contiene cualquier palabra en la lista.

Otros consejos

En mi trabajo, ponemos un filtrado automático de la palabra mala palabra en nuestro software (es un tipo de impactante que navega por la fuente y repentinamente se ejecuta a través de la matriz que contiene varias páginas de obscenidad).

Un consejo es pre-procesar la entrada del usuario antes de probar contra su lista, en ese caso que alguien está tratando de escabullirte algo por usted.Así que a modo de preprocesamiento, nosotros

  • mayúsculas todo en la entrada
  • Eliminar la mayoría de los no alfanuméricos (es decir, simplemente empalmar cualquier espacio, o puntuación, etc.)
  • y luego asumiendo que alguien está tratando de pasar los dígitos para las letras, haz algo así: Reemplace cero con O, 9 con G, 5 con S, etc. (Get Creative)

y luego consigue algunos amigos para tratar de romperlo.Es divertido.

Podría considerar usar los objetos HashKey o Dictionary<T1, T2> en lugar de la matriz, ya que el uso de un diccionario, por ejemplo, puede hacer que el código sea más eficiente, porque el método .contains () se convierte en .keys.contains (), lo que es mucho más eficiente.Esto es especialmente cierto si tiene una lista grande de Profanidades (¡no está seguro de cuántos hay! :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top