Nur bestimmte Daten aus txt auslesen...

Status
Nicht offen für weitere Antworten.

Assassin

Mitglied
Hallo,

hat jmd. von euch eine Idee, wie ich nur bestimmte Daten aus einer txt rauslesen und speichern kann? oO
Beispielhaft die folgenden 'fettgedruckten' Daten...

Unbearbeiteter Daten-Export (tabs separat)


Klient: Tester,Testperson
Sitzung: Test Stresstest 6 min 2
Datum: 08-04-2006
Zeit: 14:58:17
Dauer: 299 Sekunden.
Ausgabegeschwindigkeit: 127 Samples/sek.

Wäre für einen Tipp wirklich dankbar,
Danke :)
 
S

SlaterB

Gast
du liest alle Daten und tust danach so, als hättes du ein paar nicht gelesen (merkt doch keiner)
fürs Speichern brauchst du dann aber doch alle, musst sie wieder mit speichern
 

0001001

Bekanntes Mitglied
Kommt drauf an. Wenn die Daten immer gleich aussehen, bspw. das Datum 08-04-2006, dann kannst du min einem regulären Ausdruck arbeiten. Ansonsten musst du halt danach in der text-Datei suchen.

Bsp:
txt.indexOf("Datum:") + 6; //als Startwert
und
txt.indexOf("Zeit:"); //als Endwert

sollte genau 08-04-2006 ergeben
 

Assassin

Mitglied
Hi^^.

Leider sehen die Daten nicht immer gleich aus, sodass ich eine Methode brauche, welche jeweils die entsprechende Stelle in der entsprechenden txt ausliest...*seufzt*.

Erwähnt wurde dann noch die Methode parseLine(), welche ich 'implementieren' soll (Auslesen und Speichern).
Was meint ihr dazu?

Lg:)
 
Zuletzt bearbeitet:

Ark

Top Contributor
Dann wird dir wohl nichts anderes übrig bleiben, als die Strukturen zu untersuchen und eine Grammatik zu finden, die genau zu diesen Strukturen passt. Im einfachsten Fall ist sie regulär (aktuell deutet alles darauf hin), dann reichen reguläre Ausdrücke.

Schwieriger wird es, wenn die Grammatik nur kontextfrei ist usw., siehe dazu auch die Chomsky-Hierarchie.

Hast du zufälligerweise den Quelltext zu dem Programm, das diese Textdatei erzeugt, oder stehen irgendwo die Regeln (also die Grammatik) beschrieben, nach denen die Textdatei erzeugt wird? Das würde die Sache ungemein vereinfachen.

Ansonsten kann dir wohl nur noch weitergeholfen werden, wenn du mehr Beispiele bringst.

Ark
 

Assassin

Mitglied
Hi.

Also, die Datei ist die Ausgabe eines biometrischen Messgerätes und sieht wohl doch immer vom Aufbau her gleich aus, sdoass ich mich auf obiges txt-Bsp. beschränken kann. ;)

Kann mir jmd. noch ein wenig was zu dem Vorschlag von oben sagen?
Meine den hier...
Bsp:
txt.indexOf("Datum:") + 6; //als Startwert
und
txt.indexOf("Zeit:"); //als Endwert

Könnte ich das auch dafür nutzen die anderen Daten rauszuziehen?
Ich meine, die andere Zahl bspw. könnte ja auch variieren (von der Größe her) und dann funktioniert der Vorschlag nicht mehr wirklich, oder? oO

Hat jmd. vielleicht ein einfaches Beispiel (komplett)/ einen Link mit einem Beispiel, wie man so einzelne Daten ausliest und speichert? *neugierig ist* ;)

Lg:)
 
S

SlaterB

Gast
> txt.indexOf("Datum:") + 6;
kannst du auch für die Ausgabegeschwindigkeit nutzen, wenn du den Text im IndexOf anpasst sowie die Zahl

da ist doch ein einfaches System zu erkennen oder nicht? etwas schwieriger wirds vielleicht, wenn die Zahl 127 nicht immer dreistellig ist sondern auch mal zweistellig,
dann nach dem Leerzeichen danach suchen und genau die Indexe merken
 

Assassin

Mitglied
*nickt* Genau das meinte ich, was wenn die Zahl eben in ihrer Länge variiert? ;)

> txt.indexOf("Datum:") + 6;
kannst du auch für die Ausgabegeschwindigkeit nutzen, wenn du den Text im IndexOf anpasst sowie die Zahl

Was heißt denn das für einen 'Anfänger' übersetzt? oO

Ich meine, ich habe sowas noch nicht benutzt bisher und würde eben wirklich gerne mal ein Beispiel ansehen.

Falls also jmd. ein leicht verständliches kennt, bitte her damit! ;)

Danke trotzdem nochmal,
Lg:)
 

r0bbe

Mitglied
Hm, was verstehst du nicht? ;)

txt.indexOf liefert dir die Position, des ersten Vorkommens des Strings nach dem du gesucht hast.
Also Beispiel:

Angenommen das 48.te Zeichen in deiner txt Datei ist "D", die nächsten 6 Zeichen sind "atum: "
txt.indexOf("Datum: ") + 6 ergibt dann 54 (weil 48 + 6), jetzt kennst du den Startpunkt für substring(), mit dieser Methode kannst du dir die nächsten 10 Zeichen zurückgeben lassen, dann hast du das Datum.

Das gleiche Prinzip kannst du natürlich - wie bereits erwähnt - auch auf andere Wörter anwenden, z.B. "Ausgabegeschwindigkeit: " anwenden, wenn der Wert jetzt in seiner Länge variabel ist nimmst du txt.indexOf("Ausgabegeschwindigkeit: ") + 24 als Startwert für ein neues indexOf mit dem du nach dem nächsten Leerzeichen suchst und bildest die Differenz für substring().

Evtl. hab ich mich verzählt, oder es gibt es schönere Möglichkeiten, aber funktionieren würde es.
 

FatFire

Bekanntes Mitglied
Java:
String sample = 	"Unbearbeiteter Daten-Export (tabs separat)\n\n" +
					"Klient: Tester,Testperson\n" +
					"Sitzung: Test Stresstest 6 min 2\n" +
					"Datum: 08-04-2006\n" +
					"Zeit: 14:58:17\n" +
					"Dauer: 299 Sekunden.\n" +
					"Ausgabegeschwindigkeit: 127 Samples/sek.\n" +
					"Unbearbeiteter Daten-Export (tabs separat)\n\n\n" +
					"Klient: Tester,Testperson\n" +
					"Sitzung: Test Stresstest 6 min 2\n" +
					"Datum: 15-05-2006\n" +
					"Zeit: 14:58:17\n" +
					"Dauer: 299 Sekunden.\n" +
					"Ausgabegeschwindigkeit: 89 Samples/sek.\n";
		
		// Pattern um das Datum auszulesen
		Pattern pattern = Pattern.compile("[\\d]{2}-[\\d]{2}-[\\d]{4}");
		// Matcher holen
		Matcher m = pattern.matcher(sample);
		// über alle gefundenen gehen und ausgeben
		while(m.find()) System.out.println(m.group());
		
		// Optional: Alle Datumswerte als Einzelwerte holen
		pattern = Pattern.compile("([\\d]{2})-([\\d]{2})-([\\d]{4})");
		m = pattern.matcher(sample);
		// Sie im Format ändern (von - als Trennzeichen zu . )
		// WICHTIG: hier könnte man auch die Reihenfolge ändern zu z.B. $3-$2-$1 für 2006-04-08
		String sample2 = m.replaceAll("$1.$2.$3");
		// Testausgabe
		System.out.println(sample2);
		// Dann nach diesem suchen und ausgeben.
		pattern = Pattern.compile("[\\d]{2}.[\\d]{2}.[\\d]{4}");
		m = pattern.matcher(sample2);
		while(m.find()) System.out.println(m.group());
		
		// Die Zahl suchen, die vor " Samples/sek." steht
		pattern = Pattern.compile("[\\d]+ Samples/sek.");
		m = pattern.matcher(sample);
		// Gefundene Zahlen ausgeben, dabei das "Samples/sek." rausschmeissen
		// (das geht bestimmt auch irgendwie direkt mit RegEx, aber ich kenn mich da nicht so aus)
		while(m.find()) System.out.println(m.group().replaceAll(" Samples/sek.", ""));

Das geht bestimmt auch noch eleganter, aber ich bin noch nicht so der RegEx-Blicker.

Gruß FatFire
 

Noctarius

Top Contributor
Wie wäre es einfach ne Map aufzubauen Key/Value genau wie bei Parametern eines Servlets?

Damit wäre jeweils eine Zeile:
Key = Start -> bis erstes Vorkommen Doppelpunkt
Value = Trim(Text ab Doppelpunkt)
 

heart_disease

Bekanntes Mitglied
Das hier wäre mein Ansatz. Ich denke er ist leicht nachzuvollziehen, die RegEx sind auch nicht sonderlich kompliziert:
Java:
import java.io.*;

public class DataReader {
	protected File config;
	
	public static void main(String[] args) {
		DataReader dr = new DataReader( new File("config/data.txt") );
		dr.readValues();
	}
	
	public DataReader( File f ) {
		this.config = f;
	}
	
	public void readValues() {
		BufferedReader br;
		
		try {
			br = new BufferedReader( new FileReader(this.config) );
			
			String value;
			for ( String tmp; (tmp=br.readLine()) != null; ) {
				if ( tmp.startsWith("Datum") ) {
					value = tmp.replaceAll( "Datum: (.*)", "$1" );
					System.out.println( value );
				} else if ( tmp.startsWith("Ausgabegeschwindigkeit") ) {
					value = tmp.replaceAll( "Ausgabegeschwindigkeit: ([0-9]*) (.*)", "$1" );
					System.out.println( value );
				}
			}
			
			br.close();
		} catch ( Exception e ) {
			e.printStackTrace();
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
B Denkanstoß benötigt: Emails an bestimmte Emailadresse schicken Java Basics - Anfänger-Themen 6
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
L String auf bestimmte zeichen untersuchen Java Basics - Anfänger-Themen 9
L Bestimmte Werte eines Arrays ausgeben. Java Basics - Anfänger-Themen 3
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
Henri Bestimmte Werte eine XML-Datei ausgeben. Java Basics - Anfänger-Themen 8
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
B Best Practice Bestimmte Zahl auslesen und in Variable speichern Java Basics - Anfänger-Themen 3
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
I Int Array, Zahl an bestimmte position setzten Java Basics - Anfänger-Themen 2
C [Bukkit Plugin] Blöcke eine bestimmte route entlang fliegen Java Basics - Anfänger-Themen 3
A Button in eine bestimmte Spalte platzieren Java Basics - Anfänger-Themen 4
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
M Bestimmte Zeichen auslesen Java Basics - Anfänger-Themen 2
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
W bestimmte Objekte in ArrayList auslesen Java Basics - Anfänger-Themen 8
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
J Bestimmte Anzahl Zeichen aneinander fügen Java Basics - Anfänger-Themen 9
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Nur bestimmte Klasse ausführen Java Basics - Anfänger-Themen 6
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D BufferedInputStream nur bestimmte Zeichen Java Basics - Anfänger-Themen 11
D Input/Output bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
B Bestimmte Ziffer Java Basics - Anfänger-Themen 27
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
R Bestimmte Stellen eines BigInteger Java Basics - Anfänger-Themen 7
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
S Bestimmte Methode von unbestimmter Datei Java Basics - Anfänger-Themen 6
V Bestimmte Stellen aus .txt Datei auslesen Java Basics - Anfänger-Themen 11
B bestimmte klammern im string ersetzten Java Basics - Anfänger-Themen 17
Binary.Coder JTable bzw. Tabelle in bestimmte Form überführen Java Basics - Anfänger-Themen 5
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
X im Verzeichnissbaum recursiv nur bestimmte Dateien finden Java Basics - Anfänger-Themen 7
M Aus String bestimmte Inhalte auslesen Java Basics - Anfänger-Themen 8
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
2 Bestimmte Anzahl von Bytes lesen und als string ausgeben? Java Basics - Anfänger-Themen 3
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
StrikeTom Bestimmte stelle in string herausfiltern Java Basics - Anfänger-Themen 7
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
E Bild eine bestimmte Anzahl blinken lassen Java Basics - Anfänger-Themen 3
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
Luk10 Zufallszahl "ohne" eine bestimmte Zahl(en) Java Basics - Anfänger-Themen 8
S OOP Wie bei Spiel "17+4" eine Karte an bestimmte Position hinzufügen Java Basics - Anfänger-Themen 13
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
S Bestimmte Elemente einer ArrayList löschen Java Basics - Anfänger-Themen 3
S Double bis bestimmte Nachkommzahl vergleichen (ohne zusätzliche Libs) Java Basics - Anfänger-Themen 12
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
N Text an bestimmte Stelle eines Dokuments schreiben Java Basics - Anfänger-Themen 6
G Bestimmte Zeile aus CSV ausgeben Java Basics - Anfänger-Themen 14
Developer_X Durch int Bestimmte Zeile überschreiben Java Basics - Anfänger-Themen 16
Developer_X Bestimmte Zeile aus TextDocument lesen Java Basics - Anfänger-Themen 2
V Nur bestimmte Werte zulassen Java Basics - Anfänger-Themen 2
M Bestimmte zeile aus .txt einlesen Java Basics - Anfänger-Themen 6
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
G Bestimmte Ebene eines Baumes rekursiv ausgeben Java Basics - Anfänger-Themen 49
I bestimmte Zahlen markieren.helppp. Java Basics - Anfänger-Themen 17
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
H bestimmte objekte in ArrayList löschen? Java Basics - Anfänger-Themen 7
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
M bestimmte Zeichen in String eliminieren Java Basics - Anfänger-Themen 2
T Bestimmte Zeile aus einer .txt-Datei auslesen? Java Basics - Anfänger-Themen 10
S Bestimmte Anzahl an nummern auslesen Java Basics - Anfänger-Themen 4
K bestimmte Dateien aus Ordner verschieben Java Basics - Anfänger-Themen 5
F Bestimmte Werte nicht beachten Java Basics - Anfänger-Themen 10
G bestimmte Stelle aus Textdatei auslesen. Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben