problem beim splitten (plain)

0 views
Skip to first unread message

Kai Probst

unread,
Aug 15, 2001, 8:06:54 AM8/15/01
to
Sorry hab mich verklickt, hier als plain txt:
---------------------------------------------

habe folgendes (für euch sicher simples) Problem:

ich habe eine 6stellige Zahl (z.B. 131500) Die ich in dieses Format bringen
muss:

13:15:00

Ich weiss, rtfm, aber ich finde es einfach nicht bzw werde aus der Erklärung
nicht ganz schlau.

Ich weiss dass ich printf() oder sprintf() dafür brauche. Wäre nett wenn mir
jemand helfen würde!

mfg,
Kai


Dennis Scheck

unread,
Aug 15, 2001, 8:51:19 AM8/15/01
to
Hallo Kai,

"Kai Probst" <k.pr...@sap.com> schrieb:

> ich habe eine 6stellige Zahl (z.B. 131500) Die ich in dieses Format
> bringen muss: 13:15:00

my $zahl = "131500";
$zahl =~ s/(\d{2})(\d{2})(\d{2})/$1:$2:$3/;


HTH,
Dennis
--
Voll replyfaehige eMailadresse. Wird aber aus Spamvermeidungsgruenden
in unregelmaessigen Abstaenden verworfen. Private Adresse oder PGP-Key
auf Anfrage.

Bjoern Hoehrmann

unread,
Aug 15, 2001, 9:18:51 AM8/15/01
to
* Kai Probst wrote in de.comp.lang.perl.misc:

>habe folgendes (für euch sicher simples) Problem:
>
>ich habe eine 6stellige Zahl (z.B. 131500) Die ich in dieses Format bringen
>muss:
>
>13:15:00

{ print join ":" => q(13:15:00) =~ m/(\d{2})/g }

>Ich weiss dass ich printf() oder sprintf() dafür brauche.

{ printf "%02d:%02d:%02d" => q(13:15:00) =~ m/(\d{2})/g } # oder
{ printf "%s:%s:%s" => q(13:15:00) =~ m/(\d{2})/g }

Mir gefällt das erste allerdings besser.
--
print just another perl hacker q;s/^\w+_}/ #+--- regards, Björn Höhrmann
;;sub _{reverse split q=:+==>[caller${\1}] #| mailto:bjo...@hoehrmann.de
->[3]};;sub another::just{shift&&join q> > #| http://www.bjoernsworld.de
=>_,@_};package hacker;sub perl{_}$0=~m(_) #+ http://bjoern.hoehrmann.de

Kai Probst

unread,
Aug 15, 2001, 9:07:06 AM8/15/01
to
Danke an alle, habs hingekriegt dank eurer mails und antworten!

-Kai


Martin Vorlaender

unread,
Aug 15, 2001, 3:06:18 PM8/15/01
to
Bjoern Hoehrmann (bjo...@hoehrmann.de) wrote:
> * Kai Probst wrote in de.comp.lang.perl.misc:
> >ich habe eine 6stellige Zahl (z.B. 131500) Die ich in dieses Format
> >bringen muss:
> >
> >13:15:00

> { print join ":" => q(13:15:00) =~ m/(\d{2})/g }

> >Ich weiss dass ich printf() oder sprintf() dafür brauche.

> { printf "%02d:%02d:%02d" => q(13:15:00) =~ m/(\d{2})/g } # oder
> { printf "%s:%s:%s" => q(13:15:00) =~ m/(\d{2})/g }

> Mir gefällt das erste allerdings besser.

Mir gefaellt die Loesung ohne regex besser:

$z = q(131500);
$string = substr($z,0,2).':'.substr($z,2,2).':'.substr($z,4,2);

cu,
Martin
--
So long, and thanks | Martin Vorlaender | VMS & WNT programmer
for all the books... | work: m...@pdv-systeme.de
In Memoriam Douglas Adams | http://www.pdv-systeme.de/users/martinv/
1952-2001 | home: mar...@radiogaga.harz.de

Thoren Johne

unread,
Aug 15, 2001, 5:09:41 PM8/15/01
to
mar...@radiogaga.harz.de (Martin Vorlaender) writes:

> $z = q(131500);
> $string = substr($z,0,2).':'.substr($z,2,2).':'.substr($z,4,2);

das kann ich (fast) genauso hässlich ;)

print join ':', (split /(..)(\d{2})/, $z)[1..3];

--
# Thoren Johne - 8#X - tho...@southern-division.com
# Southern Division Classic Bikes - www.southern-division.com
*human=*you=*me=*stupid=*DATA=>#print"Just Another Perl Hacker\n 8#X"
*stupid&&*human&&*me&&*you&&2&&seek*me,-116,1;read*you,$_,42;eval;__END__

Bjoern Hoehrmann

unread,
Aug 15, 2001, 5:45:20 PM8/15/01
to
* Martin Vorlaender wrote in de.comp.lang.perl.misc:

>Mir gefaellt die Loesung ohne regex besser:
>
>$z = q(131500);
>$string = substr($z,0,2).':'.substr($z,2,2).':'.substr($z,4,2);

Bäh, da würde ich ja sogar noch

print join':' => (split/(..)/, '131500')[1,3,5]

vorziehen. Aber wenn es substr() sein soll, dann doch lieber

my$z=131500;substr$z=>$_=>0=>':'for 2,5;print$z;

Wollen wir jetzt anfangen zu benchmarken? ;-)

Joerg Plate

unread,
Aug 15, 2001, 6:09:27 PM8/15/01
to

>> $z = q(131500); $string = substr($z,0,2).':'.substr($z,2,2).':'.substr($z,4,2);

[substr vs. regexp]

> Wollen wir jetzt anfangen zu benchmarken? ;-)

<quote src="Effective Perl Programming" authors="Hall & Schwartz">

Item 20: Avoid using regular expressions for simple string operations

- Extract and modify substrings with substr

The substr operator is much faster than a regular expression

</quote>

Wie wäre es mit:

$string = q(131500); substr($string,4,0)=":"; substr($string,2,0)=":";

Jörg
--
"I'm working on it." <http://www.psyche.kn-bremen.de/>

"Du hast gemacht was wir von Dir wollten." Kündigungsbegründung

Bjoern Hoehrmann

unread,
Aug 15, 2001, 7:15:41 PM8/15/01
to
* Joerg Plate wrote in de.comp.lang.perl.misc:

>Wie wäre es mit:
>
> $string = q(131500); substr($string,4,0)=":"; substr($string,2,0)=":";

Was ja so viel anders ist, als mein wesentlich lesbareres

substr$z=>$_=>0=>':'for 2,5;

Fragezeichen.

Reply all
Reply to author
Forward
0 new messages