In einem Java-String nach einem Wort suchen?
Name ist nicht Programm
Nehmen wir an ich habe den
String suchen = "hallo a oder o";
Wenn ich das mit suchen.contains("a") oder suchen.contains("o") suche, dann kriege ich die Buchstaben mitten im Wort raus. Allerdings brauche ich das tatsächliche "a" oder "o"
Wenn ich dann mit suchen.contains(" a ") mache, dann bekomme ich auch nicht ein richtiges Ergebnis
4 Antworten
wenn du nur true zurückgeliefert bekommen willst wenn ein einzelnstehendes a gefunden wird könntest du das mithilfe von regex und matches lösen:
String s = "hallo a oder o";
s.matches(".*\\ba\\b.*") // true
s = "hallo a"
s.matches(".*\\ba\\b.*") // true
s = "hallo"
s.matches(".*\\ba\\b.*") // false
regex ist etwas komplexer aber sehr vielseitig und wird auch relativ oft gebraucht. ich werd hier jetzt nicht alles erklären weil es dazu mit sicherheit sehr gute anleitungen gibt.
im endeffekt sagst du mit \\b dass das da eine wortgrenze sein soll und .* bedeuted im endeffekt dass vor und nach dem einzelstehendem buchstaben (in dem fall ein a) alles mögliche stehen darf.
Reguläre Ausdrücke.
Meine Regexwissen ist sehr verrostet, aber mit https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#matches-java.lang.String-
Kann man so etwas machen.
du könntest vielleicht den String in einem char Array speichern und nach dem Index mit "a" suchen, wo daneben mit index von "a" +1 bzw -1 ein Leerzeichen gespeichert ist suchen
contains(" a "); erscheint mir logisch
Wenn ich deine Frage richtig verstanden habe würde ich folgendes machen.
Dabei ist es egal ob man nach einzelnen Zeichen oder nach Wörtern sucht, nur Satzteile oder Sätze gehen nicht, da wir die Wörter einzeln durch gehen.
Weiter könnte man auch noch eine Klasse erstellen in dem ein String und ein Integer gespeichert wird, dann die momentane String-ArrayList durch eine ArrayList mit dieser Klasse ersetzen und dann mit einigen Modifikationen noch die Position der einzelnen Worte übergeben. (Erschien mir praktisch)
Ich hoffe ich hab die Frage wirklich ncht falsch verstanden den der Sinn hat sich mir nicht erschlossen.
LG Jesaja