Wort suchen


Heiser

Grünschnabel
hi,ich schreibe gerade eine Methode die nach einem Wort suchen soll


mit indexOf(eingabe ) finde ich zwar das Wort aber wenn ich zb nur zwei Buchstaben des Wortes eingebe und suche sagt er wieder true?

Gibt es da etwas, was fuer ein ganzes Wort sucht.

in dem Textfile sind die Worter in diesem Format

Eins
Zwei
Drei
Vier
usw..

Danke.
 

Kai008

Erfahrenes Mitglied
Meiner Errinnerung zu folge liefert indexOf eine Integer und keinen Boolean zurück. Zu Testen ob ein String (=Zeichenfolge (=Wort)) vorkommt kannst du contains nehmen.
 

Heiser

Grünschnabel
Hi ,Kai008 ja richtig das liefert an welche Zeile das Wort gefunden ist. Das soll auch so sein.

Das Problem ist aber das auch ein Telfolge von Buchstaben akzeptiert wird.


Beispiel
Eins
Zwei
Drei
Vier
usw..

Suche wort Zwei liefert 2. Das ist richtig.

Suche wort Zw liefert wieder 2 Das solle so nicht sein. Sop("Wort wurde in keiner Zeile gefunden")
 

Kai008

Erfahrenes Mitglied
Warum gehst du dann nicht zeilenweiße durch und prüfst mit equals? Ich denke aber, dass Zwei 1 liefern müsste.
 

c4esar

Mitglied
Dann würde ich's mit RegEx lösen.
So könntest Du gezielt die Bedingungen festlegen, z.B. dass vor einem Wort der String-Anfang oder ein Whitespace oder ein Satzzeichen liegen muss, und hinter dem Wort das String-Ende, ein Whitespace oder ein Satzzeichen.
In dem Fall würde er "zw" dann in dem String nicht mehr an der Position der "zwei" finden.
 

c4esar

Mitglied
Du brauchst kein indexOf mehr.

Das RegEx packst Du in ein
Java:
Pattern p = Pattern.compile("DeinRegex");
Dann kannst Du mit einem
Java:
Matcher m = p.matcher("DeinSuchstring");
ein Matcher-Objekt erzeugen, das dann für Dich nach der RegEx sucht, einen Index finden kann usw...
Schau Dir dann einfach mal die ganzen Methoden vom Matcher an.

Edit: Hilfreich wäre für Dich vielleicht eher
Java:
Pattern p = Pattern.compile("DeinRegex", Pattern.MULTILINE);
denn so kannst Du gezielt nach Zeilenanfang und -ende suchen.
 

Neue Beiträge