Wort in Textdatei finden
lima-city → Forum → Programmiersprachen → Java
anwendung
beendet code
bestimmen
code
durchlauf
funktioniert code
grundgedanke
kleinschreibung
null
nutz
schleife
string
suche
suchwort
system
textdatei
url
vereinfachung
wort
zeile
-
Hallo ich würde gerne wissen wie ich in einer Textdatei nach einem bestimmen Wort suchen kann und mir davon die Zeile ausgeben lassen, in der es sich befindet..dazu nutze ich natürlich Java
String wort = "SuchWort"; int lines = 0; try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); while(true) { try { String line = br.readLine(); if(line !=null) { if(line.indexOf(wort) > -1) { // Zeilenanzahl bestimmen bis zum Wort try { lines = 0; if(br.readLine() != wort) { lines++; } else { break; } System.out.print("Habe das Wort " + wort + " gefunden in " + lines); } catch (Exception e) { e.printStackTrace(); } } }
aber so geht das irgendwie nicht
als ergebnis krieg ich immer: Habe das Wort SuchWort gefunden in 1
das wort befindet sich aber in Spalte x , also ganz woanders -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1. Setzt du die Anzahl der Zeilen mit
lines = 0;
Bei jedem Durchlauf der Schleife wieder auf 0, das heißt, dass entweder 0 oder 1 rauskommt.
2. Das Ganze ist hässlich verschachtelt.
3. Du überprüfst, ob die ganze Zeile (!) dem Wort entsprichst und guckst nicht, ob in der Zeile das Wort vorkommt. Dass das Suchwort in einer Zeile alleine steht ist weniger häufig.
Ich habe dir mal einen Vorschlag geschrieben, hier habe ich aber (scheint, als wolltest du das so) die Suche in den Zeilen weg gelassen. Ich habe es schon getestet und es funktioniert.
private void sucheZeile(String wort) { try { int zeilen = 1; FileReader fr = new FileReader(datei); BufferedReader br = new BufferedReader(fr); String z = br.readLine(); while (!z.isEmpty()) { if (z.equals(wort)) { System.out.println("Ich habe das Wort \"" + wort + "\" in Zeile " + zeilen + " gefunden."); z = null; br = null; fr = null; } else { zeilen++; z = br.readLine(); } } } catch (Exception e) { System.out.println("Suchfunktion beendet."); } }
-
Moin,
ich hab das Ganze mal vereinfacht:
http://java-lima.pastebin.com/d1f3f1209
Die Suche testet aber nicht auf Groß- und Kleinschreibung, das müsste selbst implementiert werden.
Naheliegend wäre auch ein Regex, sofern es mehrere Wörter werden.
Es gibt noch weitere Vereinfachungen - wie zum Beispiel die Anwendung der Klasse Scanner.
Habe ich aber jetzt bewusst mal nicht mit aufgeführt, da sonst der Grundgedanke zwischen den Readern verloren geht.
Gruß,
Pawnee
Beitrag zuletzt geändert: 3.2.2010 0:07:23 von pawnee -
danke sehr, das hat mir sehr geholfen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage