# in einem textfeld einen andern text suchen



## vice (14. Feb 2011)

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:


```
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 (15. Feb 2011)

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

Statt 
	
	
	
	





```
new String(tSuchbegriff.getText())
```
 kannst du 
	
	
	
	





```
tSuchbegriff.getText()
```
 verwenden.

```
textEingabe.substring(0,position)
```
 wirft eine 
	
	
	
	





```
IndexOutOfBoundsException
```
, wenn 
	
	
	
	





```
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:

```
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?


----------



## chalkbag (15. Feb 2011)

Hallo,

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


```
fullTxt.replace(findTxt, "***"+findTxt+"***")
```


----------



## vice (16. Feb 2011)

also mit replace hatte ich das schon am laufen, aber unser lehrer wollte das wir das mit indexof und substring machen


----------



## vice (16. Feb 2011)

und ich danke dir xehpuk, mein programm läuft jetzt


----------

