Was ist der beste Weg, um eine Zeichenfolge für "schlechte" Wörter in C # zu analysieren?

7

Ich denke an etwas wie:

%Vor%

Aber ich bin sicher, es gibt einen besseren Weg.

Vielen Dank im Voraus!

UPDATE Ich versuche nicht, Obszönitäten automatisch zu entfernen ... Für meine Web-App möchte ich benachrichtigt werden, wenn ein Wort verwendet wird, das ich für "schlecht" halte. Dann werde ich es selbst überprüfen, um sicherzustellen, dass es legitim ist. Ein Auto-Flagging-System der Art.

    
Chaddeus 09.07.2010, 03:20
quelle

3 Antworten

16

Während Ihr Weg funktioniert, kann es ein bisschen zeitaufwendig sein. Es gibt eine wunderbare Antwort hier für eine vorherige SO-Frage. Obwohl die Frage über PHP statt C # spricht, denke ich, dass es leicht portiert werden kann.

Bearbeiten, um Beispielcode hinzuzufügen:

%Vor%

Das sollte mehr oder weniger für dich funktionieren.

Bearbeiten, um die Klärung der OP zu beantworten:

  

Ich versuche nicht, Obszönitäten automatisch zu entfernen ... Für meine Web-App möchte ich benachrichtigt werden, wenn ein Wort verwendet wird, das ich für "schlecht" halte.

Ähnlich wie beim Ersatzabschnitt oben können Sie sehen, ob etwas wie folgt übereinstimmt:

%Vor%

Es wird true zurückgegeben, wenn die Zeichenfolge, die Sie übergeben haben, irgendwelche Wörter in der Liste enthält.

    
rakuo15 09.07.2010, 03:25
quelle
4

Bei meiner Arbeit haben wir eine automatische Worterkennung in unsere Software eingefügt (es ist schockierend, die Quelle zu durchsuchen und plötzlich über das Array zu laufen, das mehrere Seiten Obszönität enthält).

Ein Tipp besteht darin, die Benutzereingaben vor dem Testen mit Ihrer Liste vorzuverarbeiten, in diesem Fall versucht jemand, etwas von Ihnen zu schleichen. Also im Wege der Vorverarbeitung, wir

  • Großbuchstaben alles in der Eingabe
  • Entfernen Sie die meisten nicht alphanumerischen Zeichen (dh spleißen Sie einfach Leerzeichen oder Interpunktionszeichen aus.)
  • und dann unter der Annahme, dass jemand versucht, Zahlen für Buchstaben auszugeben, mach das folgende: Null durch O, 9 durch G, 5 durch S usw. (kreativ werden)

Und dann hol ein paar Freunde, um zu versuchen, es zu brechen. Es macht Spaß.

    
Detmar 09.07.2010 05:03
quelle
1

Sie könnten die Objekte HashKey oder Dictionary<T1, T2 & gt; B. das Verwenden eines Dictionary, kann den Code effizienter machen, da die .Contains () -Methode zu .Keys.Contains () wird, was viel effizienter ist. Dies gilt insbesondere, wenn Sie eine große Liste von Obszönitäten haben (nicht sicher, wie viele es gibt!:)

    
Alex 09.07.2010 03:30
quelle

Tags und Links