Thread Textstring richtig zerlegen?
(12 answers)
Opened by kami at 2012-06-12 12:07
Hier ein Vorschlag:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #! /usr/bin/perl use strict; use warnings; # Jeder logische Teil (Tag, Stunde, Minute) ist optional; # daher mit nicht-einfangender Klammer gruppiert und mit # Modifier ? versehen my $regex = qr{ (?: # Gruppierung, weil optional (\d+)\s+Tage # Anzahl Tage einfangen; 1. Rueckgabewert )? \s* (?: # Gruppierung, weil optional (\d+)\s+Std\. # Anzahl Stunden einfangen; 2. Rueckgabewert )? \s* (?: # Gruppierung, weil optional (\d+)\s+Min. # Anzahl Minuten einfangen; 3. Rueckgabewert )? }x; while ( my $line = <DATA> ) { my ( $d, $h, $m ) = $line =~ m{$regex}; for ( $d, $h, $m ) { $_ = 0 if !defined $_; } print "$d D, $h h, $m m\n"; } __DATA__ 3 Tage 12 Std. 3 Min. 2 Std. 4 Min. 2 Min. ~ Resultat: Scheint mir Deiner Anforderung recht nahe zu kommen ;-) Wichtig ist hier, dass die Reihenfolge der einzelnen Werte immer gleich bleibt. D.h. Tage stehen vor Stunden, die vor Minuten stehen. Wenn die Reihenfolge auch noch variiert, braucht es eine andere Variation. Last edited: 2012-06-12 17:46:03 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |