in einem textfeld einen andern text suchen

vice

Mitglied
hallo, bin grad irgendwie am verzweifeln ???:L???:L,ich soll eine Methode schreiben, die in einem textfeld einen andern text sucht. Dazu habe ich folgendes geschrieben:

Java:
        if (o==bSuche) {
            
            String Suchtext = new String(tSuchbegriff.getText()); // Eingabe
            int position = textEingabe.indexOf(Suchtext); // Länge von Suchtext
            dummy = textEingabe.substring(0,position);   
            dummy += "***"+ Suchtext + "***";
            position = textEingabe.indexOf(position + 6 + Suchtext.length());
            dummy += substring(position,textEingabe.length());
             
            textAusgabe = dummy;
       
        }


aber irgendwie muss da ein fehler drin sein, aber mein bluej compeliert einfach ohne ende, so dass er mir keine fehlermeldung anzeigt.

hoffe ihr könnt mir schnell helfen
 

xehpuk

Top Contributor
Eine (genaue) Fehlerbeschreibung wäre nicht schlecht gewesen. Hier mal ein paar Dinge:

Statt
Code:
new String(tSuchbegriff.getText())
kannst du
Code:
tSuchbegriff.getText()
verwenden.
Code:
textEingabe.substring(0,position)
wirft eine
Code:
IndexOutOfBoundsException
, wenn
Code:
position
negativ ist (der Suchtext also nicht in dem zu durchsuchenden Text vorkommt).

Du möchtest wohl in einem Text den gesuchten Text mit drei Sternchen kennzeichnen? Problematisch wirds bei dir in Zeile 7, wo du String.html#indexOf(int) benutzt.

Probiers mal hiermit:
Java:
public class TextSuchen {
	public static void main(String[] args) {
		System.out.println(search("abcdef", "a"));
		System.out.println(search("abcdef", "de"));
		System.out.println(search("abcdef", "g"));
	}
	
	private static String search(final String input, final String find) {
		int position = input.indexOf(find);
		if (position < 0)
			return input;
		String result = input.substring(0, position);
		result += "***" + find + "***";
		position += find.length();
		result += input.substring(position);
		return result;
	}
}

Öh, nanu?
 
Zuletzt bearbeitet:

chalkbag

Bekanntes Mitglied
Hallo,

vielleicht verbietet es ja die Aufgabenstellung, oder welchen Nachteil hätte in diesem Fall replace? :bahnhof:
Nur aus Interesse..

Java:
fullTxt.replace(findTxt, "***"+findTxt+"***")
 

Neue Themen


Oben