Schrift
[thread]6622[/thread]

String nach n Zeichen splitten



<< >> 5 Einträge, 1 Seite
Gast Gast
 2005-01-10 18:44
#50700 #50700
Hallo, bin neu bei perl und suche schon eine ganze Weile nach
einem Weg mein Problem zu lösen.

Ich habe einen String: $S=EMARTQKNKATSAHLGLLKANVAKLRRELISPKGG"

Ich brauche eine funktion die den String durchläuft und immer nach fünf Zeichen splittet und in ein array packt.

Das resultat sollte so aussehen:
a[0] = "EMART"
a[1] = "QKNKA" usw.

Hat jemand ne Idee ?
Relais
 2005-01-10 19:00
#50701 #50701
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
my $string = "EMARTQKNKATSAHLGLLKANVAKLRRELISPKGG";
my @array = ( $string =~ m/(.{5})/g );
print join "\n", @array;


Siehe perldoc perlre, perldoc perlrequick, perldoc perlretut...
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Taulmarill
 2005-01-10 20:11
#50702 #50702
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn das letzte element nicht zwingend 5 zeichen haben muss, dann würde ich den regex folgendermassen modufizieren:
Code: (dl )
my @array = $string =~ m/(.{1,5})/g;

die klammern, die relais um den regex gemacht hat sind eigendlich nicht nötig, machen aber offensichtlicher wie der code funktioniert.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2005-01-10 23:50
#50703 #50703
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
string nach 5 zeichen aufsplitten?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my $chars = 5;
my $length = length($string);

my $parts = $length / $chars;
my $pattern = "A$chars " x int($parts);

if ($parts ne int($parts)) { # rest geblieben => noch ein A* ans ende packen
  $pattern .= "A*";
}
my @strings = unpack($pattern, $string);

(nicht getestet, aber sollte funktionieren)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Taulmarill
 2005-01-11 16:21
#50704 #50704
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
@strat: warum einfach wenns auch schwer geht ;)
ist aber ein schönes TIMTOWTDI.

allerdings spaare ich immer gerne variablen und zeilen:
Code: (dl )
1
2
3
my $chars = 5;
my $pattern = "A$chars " x int(length($string) / $chars) . "A*";
my @strings = unpack($pattern, $string);
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< >> 5 Einträge, 1 Seite



View all threads created 2005-01-10 18:44.