Ich muss die Profanität aus den Einsendungen der Benutzer in einer Java-basierten Webanwendung herausfiltern. Der Kunde ist sich sowohl des Scunthorpe-Problems als auch des Clbuttic-Problems bewusst und hat die Konsequenzen akzeptiert. Bitte, ich wünsche mir keine Debatte über das Fehlen einer Zensur.
Es gibt zwei Datenbits:
- Die Übermittlung des Benutzers, die möglicherweise 500 Wörter oder so enthalten kann;
- Eine einspaltige Datenbanktabelle mit Wörtern, die nicht zulässig sind. Diese Tabelle enthält möglicherweise viele tausend Datensätze.
Die vorliegende Lösung scheint mir falsch:
- Die gesamte Tabelle wird beim Start in einen Singleton (also im Speicher) in einen statischen String [] geladen.
- Für jede Benutzerübermittlung durchlaufen wir das Array und führen eine .indexOf () durch, um festzustellen, ob ein bestimmtes Wort in der Zeichenfolge [] in der Übermittlung erscheint.
- Wenn es erscheint, ersetzen wir durch Zeichen im Stil von $ $ # @%. Dies erfolgt durch Tokenisieren der Benutzerübermittlung, Durchlaufen der gesamten Benutzerübermittlung als Token (erneut) und Ersetzen jeder Instanz des gefundenen Wortes.
Diese Lösung mag brillant sein, aber ich bin skeptisch. Und nachdem ich es mir eine Weile angesehen habe, kann ich mich nicht daran vorbei finden.
Die Frage ist, was ist eine Lösung, die eine gute Leistung erbringt und hoffentlich für zukünftige Entwickler einigermaßen vernünftig ist, wenn ich entlassen werde, weil ich kein obskures Wort herausgefiltert habe, von dem ich noch nie gehört habe?