Apps für Android programmieren leicht gemacht!

Schimpfwörter filtern

Wer sich an einem Filter für Schimpfwörter versuchen möchte sollte sich einmal unsere Lösung zu diesem Problem anschauen.

Eigentlich geht es darum, Wörter eines Strings durch bestimmte Wörter einer Auswahl zu ersetzen.
Dabei könnte man wie folgt vorgehen:

String text = "Hey du Popel, willst du nicht die Fresse halten ?";

text.replaceAll("Popel", "Pop**");
text.replaceAll("Fresse","Fre***");

//Die Ausgabe wäre nun: Hey du Pop**, willst du nicht die Fre*** halten ?

 

Wie ihr sicherlich bemerkt habt, habe ich nur die ersten 3 Buchstaben angezeigt und alle weiteren Buchstaben des Schimpfwortes durch Sternchen ersetzt. Es sind übrigens genau so viele Sternchen gesetzt, wie das restliche Schimpfwort lang gewesen wäre.
Diese Vorgehensweise erscheint mir doch etwas rudimentär, wenn man bedenkt, dass ein Text mehr als nur 2 verschiedene Schimpfwörter erhalte kann.

Wir können doch nicht für jedes Schimpfwort eine neue Programmierzeile anlegen und selber herausfinden, wie lang das restliche Schimpfwort nicht gewesen wäre, um entsprechend Sternchen aufzufüllen.

Also muss es eine bessere Lösung geben.
Meine Lösung ist vielleicht nicht perfekt, aber sie erspart uns ein wenig Arbeit und spart Platz im Programmcode.

public String filter(String text){

   String[] schimpfwoerter{"Popel", "Fresse", "Arsch"};
   String sternchen = "******************************************";

   for(String wort : schimpfwoerter){
      text.replaceAll(wort, (wort.substring(0,3) + sternchen.substring(0,(wort.length() - 3))));
   }

   return text;
}

 

Was haben wir hier eben gerade getan ?
Eigentlich ist es ganz einfach.
Wir haben uns eine Funktion „filter“ erstellt, an welche wir einen zu filternden String übergeben können. Sie liefert uns den gefilterten String zurück.
In Zeile 3 definieren wir uns erst einmal alle zu filternden Schimpfwörter (Hier solltet ihr all euren Intellekt hinein stecken und das Array mit Schimpfwörtern füllen).
In Zeile 4 definieren wir eine unmöglich lange Zeichenkette von Sternchen, von denen wir später nur einen Bruchteil anzeigen werden.
Innerhalb der for-Schleife gehen wir nun alle in Zeile 3 definierten Schimpfwörter durch.
Erst die Zeile 7 ist wirklich interessant. Hier sollte ich etwas weiter ausholen.

Die Funktion „replaceAll“ erlaubt es uns eine vor ihr definierte Zeichenkette (in unserem Beispiel heißt diese „text“), insofern zu zu bearbeiten, als dass wir einzelne Strings durch andere String ersetzen können. Also können wir innerhalb von der Zeichenkette „text“ nach allen Zeichenketten suchen, die als erster Parameter in der Klammer steht, und sie durch alle Zeichenketten ersetzen, die als zweiter Parameter in der Klammer steht.

zuDurchsuchenderText.replaceAll( SucheNach, ErsetzeDurch );

Nun haben wir in unserem Code als ersten Parameter das momentan aktuelle Schimpfwort definiert.
Wir suchen also nach einem Schimpfwort, um es zu ersetzen.

Der zweite Parameter setzt sich aus den ersten 3 Buchstaben des Schimpfwortes zusammen („wort.substring(0,3)“) und einer bestimmten Anzahl an Sternchen („sternchen.substring(0,(wort.length() – 3))“).
Die Anzahl der Sternchen wird durch die Länge des Schimpfwortes minus 3 deklariert.
Ist unser Schimpfwort 6 Buchstaben lang werden wir also die ersten 3 Buchstaben der Zeichenkette mit den Sternchen nehmen und an die ersten 3 Buchstaben des Schimpfwortes dranhängen.

 

Ein Aufruf sähe wie folgt aus:

String text = "Hey du Popel, willst du nicht die Fresse halten ?";

text = filter( text );

//Die Ausgabe wäre nun: Hey du Pop**, willst du nicht die Fre*** halten ?

 

Wir wären also in der Lage eine beliebige Anzahl an Schimpfwörtern einzugeben und unsere Funktion würde sie alle herausfiltern und der Länge nach anpassen.

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld