# Aus einem String bestimmte zeichen auslesen und ausgeben



## MD (4. Jun 2007)

Hallo,

ich habe einen String, in dem ein kompletter Textinhalt einer UML steht. Nun möchte ich nur bestimmte wörter haben aus diesem text. Mit  if (text.contains("a href")) kann ich ja schon mal sagen, dass wenn in diesem text "a href" vorkommt, mir nur die sätze mit "a href" ausgegeben werden sollen. Leider weiß ich nicht genau, wie ich das formulieren soll. Ich möchte lediglich nur bestimmte Satzteile ausgegeben bekommen. Kann mir da jemand weiter helfen?


----------



## JPKI (4. Jun 2007)

Mit den index-Methoden auf Anfang und Ende deiner Zeichenketten testen, z.B. wo ein "a href" und das tagschließende </a> steht, dann mit String.substring(anfang,ende) die gewünsche Zeichenkette herausschneiden.


----------



## madboy (4. Jun 2007)

Vielleicht hilft das hier weiter: http://www.java-forum.org/de/viewtopic.php?t=49297&highlight=string+suchen


----------



## MD (5. Jun 2007)

Hallo
 und vielen dank erstmal für eure antworten. Ich bin mir nicht sicher, ob ich euch richtig verstanden habe, aber das was ihr meint, bezieht sich auf bestimmte wörter bzw. zeichenketten, die man schon im voraus haben möchte und auch weiß, wie sie heißen. Mein problem ist, dass ich z.b. sagen möchte, "durchsuche den text nach a hrefs und falls du welche findest, gib den kompletten satz aus". Das problem ist auch, dass mir der text komplett umbekannt ist und ich nicht wirklich mit startIndex und endIndex arbeiten kann. Oder liege ich da falsch?


----------



## madboy (5. Jun 2007)

> durchsuche den text nach a hrefs und falls du welche findest, gib den kompletten satz aus


Wie sieht ein "Satz" aus? Also durch welche(s) Zeichen ist er begrenzt?
Aufgrund der Frage nach "a href" bin ich von HTML ausgegangen.


----------



## MD (5. Jun 2007)

naja, an sich sieht es so aus... Ich hol mir eine bestimmte url, z.b. www.wikipedia.de und gebe in meinem programm einen suchbegriff ein z.b computer. Dieser komplette inhalt wird bei mir in einer txt datei gespeichert. Dann möchte ich den text analysieren. Der text, der analysiert wird, ist der seitenqueltext dieser seite. a href war lediglich einer von mehreren suchkriterien bei mir. genau so gut könnte ich auch sagen, wenn du im text <h2> findest, dann gib mir den satz aus.Ein beispiel: es ist ein text über ein bestimmtes thema und sobald a href gefunden wird durch die analyse, (Beispiel: Ein Computer ist ein Digitalcomputer, wenn er mit .....) möchte ich den kompletten satz ausgegeben bekommen.


----------



## Ark (5. Jun 2007)

Ich würde davon ausgehen, dass diese HTML-Seite ordentlich gebaut ist. Wenn ein '<' auftritt, würde ich dann alles Folgende überlesen, bis ein '>' auftritt (dieses Zeichen natürlich auch überlesen). Ansonsten würde ich jedes Zeichen nacheinander sofort ausgeben bzw. weiterverarbeiten.

Allerdings werden so eventuell auftretende Escape-Sequenzen nicht beachtet bzw. umgesetzt.

Ark


----------



## madboy (5. Jun 2007)

Für einfache Sätze sollte folgendes funktionieren:

```
String satz = "Dies ist ein Satz. Das auch? Genau, so ist es!";
        String suchwort = "ist";
        
        Pattern pattern = Pattern.compile("[^\\.\\?\\!]*" + suchwort + "[^\\.\\?\\!]*");
        Matcher matcher = pattern.matcher(satz);
        while(matcher.find()) {
            System.out.println(matcher.group());
        }
```
Allerdings bekommst du Probleme, so bald irgendwo in der Seite ein "Satzzeichen" auftaucht, wo es keinen Satz begrenzt...
Am besten liest du dich ein bisschen in die Benutzung von Regex ein und experimentierst damit n bisschen rum. Damit lassen sich wunderbar Dinge aus Texten extrahieren.


----------



## MD (5. Jun 2007)

Ich danke euch für eure schnellen antworten. Dann werd ich mir mal Regex genauer anschauen.


----------

