8
votes

Quelle est la meilleure façon d'analyser une chaîne pour "mauvais" mots en C #?

Je pense à quelque chose comme: xxx

mais je suis sûr qu'il y a une meilleure façon.

Merci d'avance!

mise à jour Je ne cherche pas à supprimer automatiquement les obscénités ... Pour mon application Web, je veux être informé si un mot que je dépose "mauvais" est utilisé. Ensuite, je vais l'examiner moi-même pour m'assurer que c'est légitime. Un système de signalisation automatique de Tremples.


2 commentaires

Je suis allé de l'avant et j'ai édité ma solution en réponse à votre mise à jour. Faites-moi savoir si cela répond à votre question.


Dupliqué possible de Comment implémentez-vous un bon filtre de blanchiment?


3 Réponses :


16
votes

Bien que votre chemin fonctionne, il peut s'agir d'un peu de temps. Il y a un Une réponse merveilleuse ici pour une précédente question. Bien que la question parle de PHP au lieu de c #, je pense que cela peut être facilement porté.

modifier pour ajouter un code d'échantillon: stry> p>

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


3 commentaires

Si vous allez faire cela, N'oubliez pas le \ b . C'est une erreur clvutique.


Haha bien fait. Le mot limite est important à coup sûr, mais si vous souhaitez filtrer pour des choses telles que redchittens ou crabes , cela le ferait.


Merci, je pense qu'une combinaison de votre réponse et de Detmar est ce que je finirai par faire. Très appréciée.



2
votes

Vous pouvez envisager d'utiliser le dictionnaire hashkey ou > au lieu de la matrice comme à l'aide d'un dictionnaire par exemple peut rendre le code plus efficace, car le. Contient () la méthode devient .Keys.Contains () qui est bien plus efficace. Ceci est particulièrement vrai si vous avez une grande liste de profanités (pas sûr combien il y a! :)


0 commentaires

4
votes

À mon travail, nous mettons un filtrage automatique de mot de mot automatique dans notre logiciel (il est un peu choquant de naviguer sur la source et courez soudainement sur la matrice contenant plusieurs pages d'obscénité).

Un astuce consiste à pré-traiter l'entrée de l'utilisateur avant de tester votre liste, dans ce cas que quelqu'un essaie de vous faufiler quelque chose par vous. Donc, à titre de prétraitement, nous

  • tout majuscule dans l'entrée
  • Supprimez la plupart des non-alphanumériques (c'est-à-dire qui sortent simplement des espaces, ou de la ponctuation, etc.)
  • puis en supposant que quelqu'un essaie de passer des chiffres pour des lettres, faites-le comme suit: remplacer zéro avec O, 9 avec g, 5 avec S, etc. (GET CREATIVE)

    puis obtenir des amis pour essayer de le casser. C'est amusant.


2 commentaires

J'aime ça ... simple et efficace à mes fins. Merci.


Non seulement cela, demandant à vos amis de casser le bon QA et une bonne nuit :)