In einem Java-String nach einem Wort suchen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik

Jesaja01  17.11.2019, 22:36

Wenn ich deine Frage richtig verstanden habe würde ich folgendes machen.

public ArrayList<String> find(String text, String contains){
  String[] words = split(text, ' ');
  ArrayList<String> foundWords = new ArrayList<String>();
  
  for(int i = 0; i < words.length; i++){
    if(words[i].equals(contains)){
      foundWords.add(words[i]);
    }
  }
  
  return foundWords;
}
  1. Übergabe des zu durchsuchenden Textes und des zu findenden Wortes/Zeichens
  2. Der gesamte Text wird in einzelne Wörter getrennt.
  3. List für gefundene Wörter wird erstellt.
  4. Jedes Wort wird durchgegangen und getestet ob es dem gesuchten entspricht.
  5. Wenn dem so ist wird das Wort in der zuvor erstellten Liste gespeichert.
  6. Die Liste mit gefundenen Wörtern wird zurückgegeben.

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

1
Jesaja01  17.11.2019, 22:39
@Jesaja01

Oh lol jetzt hab ich aus Versehen einen Kommentar geschrieben xD. sry

0
Tyldu  18.11.2019, 08:20
@Jesaja01

mir passierts oft dass ich versehntlich antworten statt kommentare schreibe^^

1
Jesaja01  18.11.2019, 10:22
@Tyldu

Ja, ist mir auch schon ab und zu mal passiert. Das ist aber auch ein bisschen unübersichtlich find ich.

0

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