Nur ein teil einer Textdatei einlesen.

solae

Grünschnabel
gibt es eine möglich nur einen Teil einer Textdatei einzulesen?

Die Textdatei wird von Digitemp erzeugt (Temperatur messungsprogramm):

Apr 09 17:37:14 Sensor 0 C: 23.50 F: 74.30
Apr 09 17:37:15 Sensor 1 C: 23.69 F: 74.64

Was ich brauche ist nur die beiden Temperaturen 23.50 und 23.69

Gibts da eine gute möglichkeit?
 
Mit Regulären Ausdrücken ist das möglich!

Google mal nach "Regular Expressions".

Dann liest du die Datei Zeilenweise ein und über jede Ziele jagst du dann ein Pattern das dir jeden Wert der
Code:
xx.xx
rausfiltert, wobei x für eine Zahl steht.

Also 2 Zahlen gefolgt von einem Punkt gefolgt von 2 Zahlen, das ganze machst du dann mit preg_match()
 
Zuletzt bearbeitet:
Sorry ich hab mich verlesen, von Visual Basic hab ich keine Ahnung :)

Aber Reguläre ausdrücke kannst du da sicher auch verwenden, aber dazu musst du dir sicher erst ne Komponente besorgen, ich hab keine Ahnung von VB.

Das Pattern zum finden der Temp ist aber bei jeder sprache fast identisch wenn es die PCRE Perl Lib verwendet, ich hab mal sowas mit Delphi gemacht da gabs jedenfalls eine kostenlose Komponente.

Es tut mir leid ich kann dir mit VB leider nicht aushelfen.
 
hehe ok trozdem danke ;) Ist ja auch bei PHP zimlich ähnlich. Ich muss einfach irgendwo noch die DLL finden.
 
ok habs jetzt geschaft. die frage ist nur, wie nun mit dem syntax nur zu den 4 zahlen komme.

Die sollten glaub bei PHP, Delfi, VB usw gleich sein. Kann mir jemand helfen?
 
So habs mal schnell in php nachgebaut das Pattern t wenn du die Perl Lib verwendest!

PHP:
<?
$string = 'Apr 09 17:37:14 Sensor 0 C: 23.50 F: 74.30 Apr 09 17:37:15 Sensor 1 C: 23.69 F: 74.64';
$pattern = '#\d{2}\.\d{2}#';
preg_match($pattern, $string, $found);
print_r($found);
?>

Also wie du das nun in VB verwenden musst weis ich nicht aber mit
Code:
\d{2}\.\d{2}
Werden immer xx.xx gefunden!

grüsse
 
Ja das ist schonmal nicht schlecht :) Nur das problem ist, das alles was ich angebe entfernt wird. also wird alles drin gelassen ausser eben die Temperatur. es müsste also genau umgekehrt sein.

Ich weiss nicht ob man bei VB die ausgeschnittenen zahlen dann verwendet werden können.
 
Dann hast du das Pattern falsch rum verwendet.

Um einen Ausdruck zu negieren muss ein [^pattern] das pattern umschliessen.

Versuch also mal:
Code:
[^\d{2}\.\d{2}]
 
hmm scheint wohl nur bei PHP so zu funktionieren.

mit [^\d{2}\.\d{2}] wird alles ausser den zahlen und . herausgefiltert. In einer erklärung für ^ habe ich das gefunden:

^ Matches the position at the beginning of the input string. If the RegExp object's Multiline property is set, ^ also matches the position following '\n' or '\r'.
 
Zurück