Schrift
[thread]7657[/thread]

Zahlen nach x stellen trennen: heute mal ne einfache Frage

Leser: 2


<< >> 10 Einträge, 1 Seite
root
 2006-01-27 22:30
#62366 #62366
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
Hi!

Ich möchte gerne aus "001002005"

ein Array machen

my @array = ("001","002","005");

Also wie split nur eben nicht mit Trennzeichen sondern mit fester breite...
Ronnie
 2006-01-27 23:01
#62367 #62367
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
perl -MData::Dumper -e 'print Dumper ["001002005" =~ /\d{3}/g]'
root
 2006-01-27 23:40
#62368 #62368
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
manchmal ist es so leicht :-)

Vielen Dank!
Dubu
 2006-01-28 13:14
#62369 #62369
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Sowas kann man auch gut (und schnell!) von unpack() erledigen lassen:
Code: (dl )
perl -MData::Dumper -e 'print Dumper [unpack ("(A3)*", "001002005")]'
root
 2006-01-28 16:14
#62370 #62370
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
Ja mit unpack hab ich auch rumprobiert aber kein schönes Beispiel gefunden und es nicht kapiert!:rock:
renee
 2006-01-29 02:42
#62371 #62371
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
zu pack:

perldoc -f pack
perldoc -f unpack
perlpacktut
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
schwabi
 2006-02-07 21:08
#62372 #62372
User since
2006-02-07
18 Artikel
BenutzerIn

user image
Habe in dem Zusammenhang was Nettes im Kochbuch gefunden. Ist vielleicht im gewünschten Zusammenhang ziemlich unschön, könnte aber in anderen Fällen praktisch sein:

Code: (dl )
1
2
3
4
5
$x="001002003";
@y=grep(!/^$/, split(/([\d][\d][\d])/,$x));

#Hilft auch, wenn die Feldlaengen mal nicht bekannt sind
$x="001Heute002nur003Salat";
steffenw
 2006-02-08 00:05
#62373 #62373
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die eckigen Klammern sind mehr als flüssig.
"!/^$/" ist doch das gleiche wie "length $_", wahrscheinlich nur performanter, weil ohne Regex.
Und "@y = split /\D+/, $x;" macht es doch auch das gleiche.
Das kann nie aus einem Kochbuch sein. Und wenn doch, nicht aus dem Perl-Kochbuch.
$SIG{USER} = sub {love 'Perl' or die};
renee
 2006-02-08 02:03
#62374 #62374
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=steffenw,07.02.2006, 23:05][...]
Und "@y = split /\D+/, $x;" macht es doch auch das gleiche.
Das kann nie aus einem Kochbuch sein. Und wenn doch, nicht aus dem Perl-Kochbuch.[/quote]
Das macht nicht ganz das gleiche, weil Du die Zahlen nicht einfaengst und nicht die "leeren" Elemente ausfilterst...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
steffenw
 2006-02-08 09:09
#62375 #62375
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Stimmt, an das erste $x (nur Zahlen) hatte ich nicht mehr gedacht, meins geht nur für das zweite $x (mit den Texten). @renee ich hatte ein großes D geschrieben!
$SIG{USER} = sub {love 'Perl' or die};
<< >> 10 Einträge, 1 Seite



View all threads created 2006-01-27 22:30.