Domanda

Sto pensando a qualcosa come:

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

Ma sono sicuro che c'è un modo migliore.

Grazie in anticipo!

Aggiornamento Non sto cercando di rimuovere automaticamente le oscenità ... per la mia app Web, voglio essere avvisato se viene utilizzata una parola che ritengo "cattiva".Allora lo rivederò io stesso per assicurarmi che sia legittimo.Un sistema di segnalazione automatico di tipo.

È stato utile?

Soluzione

Mentre la tua strada funziona, potrebbe essere un po 'di tempo.C'è un Risposta meravigliosa qui per una domanda in precedenza.Anche se la domanda parla di PHP invece di C #, penso che possa essere facilmente portato.

Modifica per aggiungere il codice di esempio:

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

dovrebbe funzionare per te, più o meno.

Modifica per rispondere Chiarimento OP:

.

Non sto cercando di rimuovere automaticamente le oscenità ... Per la mia app Web, voglio essere avvisato se viene utilizzata una parola che ritengo "cattiva".

Gran parte della porzione di sostituzione sopra, puoi vedere se qualcosa corrisponde come così:

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

Ritornerà true se la stringa che hai superato contiene le parole nell'elenco.

Altri suggerimenti

Al mio lavoro mettiamo un po 'di cattiva parola automatica filtrando nel nostro software (è un po' scioccante per sfogliare la fonte e improvvisamente correre attraverso l'array contenente diverse pagine di oscenità).

Un suggerimento è quello di pre-elaborare l'ingresso dell'utente prima di verificare contro il tuo elenco, in tal caso che qualcuno sta cercando di intrufolarsi qualcosa da parte tua.Quindi, per preelaborazione, noi

    .
  • maiuscolo tutto nell'input
  • Rimuovi la maggior parte dei non-alfanumerici (cioè, sto solo giungando gli spazi o la punteggiatura, ecc.)
  • e quindi assumendo che qualcuno stia cercando di trasmettere le cifre per le lettere, fai il qualcosa del genere: sostituire lo zero con O, 9 con G, 5 con S, ecc. (Get Creative)

e poi prendi alcuni amici per cercare di romperlo.È divertente.

È possibile considerare di utilizzare gli oggetti HashKey o Dictionary<T1, T2> anziché l'array come utilizzando un dizionario, ad esempio, è possibile effettuare il codice più efficiente, poiché il metodo .Contains () diventa. Keys.Contains () che è molto più efficiente.Questo è particolarmente vero se hai una grande lista di profanizzazioni (non sono sicuro di quanti ci sono! :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top