Necesito comprobar si una cadena contiene malas palabras.C# - La forma más rápida de encontrar un conjunto de cadenas en otra cadena
Siguiendo un consejo de otra pregunta aquí, he hecho un HashSet que contiene las palabras:
HashSet<string> swearWords = new HashSet<string>() { "word_one", "word_two", "etc" };
Ahora necesito para ver si alguno de los valores contenidos en swearWords
son en mi cadena.
que he visto hacer a la inversa, por ejemplo:
swearWords.Contains(myString)
Pero esto devolverá falso.
¿Cuál es la forma más rápida de comprobar si alguna de las palabras en el HashSet está en myString
?
Nota: me imagino que puedo usar un bucle foreach para revisar cada palabra, y romper si encuentro una coincidencia, solo me pregunto si hay una manera más rápida.
¿Por qué estás usando un 'HashSet'? Puede ser más fácil de usar 'List' aquí. Y luego divida 'myString' en una lista y haga la comparación necesaria. –
SkonJeet
@SkonJeet: si la lista de palabrotas es grande, la verificación de la contención será más rápida para un 'HashSet' que una' List', y no puedo ver que 'List' lo haga * más fácil *. –
Originalmente estaba usando una lista y luego la convertí a HashSet cuando leí que son más rápidos para verificar valores en – surfitscrollit