Wort in Text suchen und ersetzen

Saheeda

Top Contributor
Hallo,

ich möchte eine Funktion erstellen, die bestimmte Begriffe in einem Text zensiert und durch z.B. ***** ersetzt. (Die Suchtexte werden ziemlich kurz, ich schätze mal maximal 400 Zeichen.)

Meine erste Idee war, den Text einfach anhand der Leerzeichen zu splitten. Allerdings funktioniert das nur, solange keine Satzzeichen dran hängen.
Sowas hier z.B.: "Dies ist ein blub, um das Wort "blub" zu finden."

Idee Nr. 2 ist diese hier:
Java:
public static String CensorText(String searchText) {

	String[] splitted = searchText.split("\\W");
	String output = "";

	for (String s : splitted) {
		if (s.equals("blub")) {
			s = "***";
		}
		output += s + " ";
	}
	return output;
}


So wirklich glücklich bin ich mit keiner Lösung, weiß aber auch nicht, wie ichs anders machen könnte.
 
Die Klasse String hat eine replaceAll()-Methode, die genau dafür da ist.

String (Java Platform SE 6)

Java:
String str = "Dies ist ein blub, um das Wort 'blub' zu finden. Das Wort 'blib' ist auch böse!";
str = str.replaceAll("blub|blib", "***");
System.out.println(str);

Ausgabe:

Code:
Dies ist ein ***, um das Wort '***' zu finden. Das Wort '***' ist auch böse!
 
Zuletzt bearbeitet:
Unschön wird's erst bei Sonderzeichen, da .replaceAll als ersten Parameter einen Regulären Ausdruck erwartet - deswegen klappt stg's Beispiel ja auch mit dem '|' zwischen den beiden Begriffen.
Sofern z.B. der '|' innerhalb eines zu ersetzenden Begriffs liegt, muss man entsprechend -hm- maskieren, heißt das Wort wohl.
 

Neue Themen


Zurück
Oben