Suchen von String im String

Blind Guardian

Grünschnabel
Hi Leute,


Ich habe ein kleines Problem. Ich habe den Inhalt einer Textdatei ausgelesen und in einen String gewandelt, nun möchte ich aus diesem String einen String suchen. Leider gibt er mir bei der Ausgabe immer -1 zurück, was ich leider nicht verstehe.

Desweiteren wollte ich fragen, wie ich bei dem Inhalt der Textdatei alles ausgeben kann, was hinter dem String noch kommt, den ich gesucht habe.

Also in Kurzform:

Textdatei in String gewandelt,
In diesem String einen anderen String gesucht (Ausgabe immer -1?)
Es soll alles, was nach dem gesuchten String kommt ausgegeben bzw woanders gespeichert werden.

Mein Code sieht zur Zeit so aus:

Code:
{
   File file = new File("sprüche.txt"); //File belegen
   RandomAccessFile datafile = new RandomAccessFile (file, "r"); //File öffnen
	String result = "";  
   String line; 
   String s="";
   byte buffer[] = new byte[80];
   int read;
   System.out.print("Geben sie einen Text ein: "); 
   read=System.in.read(buffer,0,80); //Einlesen der Zeichen, die gesucht werden sollen
   s = new String(buffer, 0, 0, read); //Umwandeln des Pufferinhaltes in eine String
   while ((line = datafile.readLine()) != null) //Lesen der einzelnen Zeilen aus der Datei
	   result += line + "\n"; //Zeileninhalte im String Result speichern, mit abschliessendem Zeilenumbruch
	  System.out.print(result); //Ausgabe des Strings
	  int index = result.indexOf(s); //Suche des Strings s im String result
	   System.out.print(index); //Ausgabe von Index, leider immer -1
	 }

Muss leider dazu sagen, das ich fast Anfänger in Sachen Java bin..

Danke aber für eventuelle Hilfe.
-MfG- Danilo
 
Hallo,

das Ergebnis von -1 ist bei deinem Source auch richtig!

Der Grund hierfür ist deine Eingabe, die du ja mit ENTER abschliesst.
In der Variablen s ist nicht nur der eingegebe Text sondern auch noch \n\r für LF und CR.
Das kannst du bei der Ausgabe im stdout zwar nicht sehen, aber es ist da.

Sehen kannst du den ganzen Inhalt im Debugmode, wenn du dir da die Variable s anschaust.
 
Aha, das ist gut zu wissen. Die Ausgabe direkt brauche ich nicht direkt, aber vielleicht kann mir noch jemand helfen, wie ich nun von dem eingegeben String bis zum Ende der Datei den ausgelesenen String ausgeben bzw speichern kann.

Danke -MfG- Danilo

Edit:/ Mir fällt gerade auf, das ich doch die Stelle benötige, an welcher sich der String befindet, auch wenn es nur die Stelle ist, wo er beginnt.

Dann kann ich mir die Länge des gesamten Strings ausgeben lassen, den ich aus der Datei gelesen habe und von der Stelle des gesuchten Strings bis zur Gesamtlänge die Zeichen ausgeben lassen...wäre eine Möglichkeit. Leider habe ich halt diese Problem mit der -1, was wie der Vorredner sagt durch das "ENTER" drücken verursacht wird.

Pls help :)

Danke

und nochmal edit:/

hat sich bis jetzt erstmal erledigt...das was ich bisher wollte bin ich nun doch noch drauf gekommen. Naja vielleicht melde ich mich später nochmal, wenn ich wieder ein problemchen habe :)
 
Zuletzt bearbeitet:
Zurück