Archiv verlassen und diese Seite im Standarddesign anzeigen : frage zu arry/split
Chakotay
09-08-2006, 11:52
mit
my $String = "test test";
my @array = split(//, $String);
print("@array");
kann ich ja meinen $String nach jeder zeile ein leerzeichen machen lassen
ausgabe:
"t e s t t e s t "
ist es auch möglich das split nich nach jedem zeichen greift sondern nur alle 2 oder 3 zeichen
geplante ausgabe bei 2:
"te st t es t"
oder bei 3:
"tes t t est "
???
wenn ja wie
Romanday
09-08-2006, 15:07
mit
ist es auch möglich das split nich nach jedem zeichen greift sondern nur alle 2 oder 3 zeichen
geplante ausgabe bei 2:
"te st t es t"
oder bei 3:
"tes t t est "
???
Ne, split() macht so etwas nicht. Wenn Du rumflippen willst mußt
du persönlich Hand anlegen.
.. Mit einer Schleife einzeln die Buchstaben durchlaufen, und dann
entsprechend die Leerzeichen setzen. (if/else o. random)
so sollte das gehen ...
my $string = "test test";
my @array;
# Number of characters at one array pos
my $mod = 2;
my $arrayIndex=-1;
for($i=0; $i < length($string); $i++) {
if($i % $mod == 0) {
$arrayIndex++;
}
$array[$arrayIndex] = $array[$arrayIndex].substr($string, $i, 1);
}
print "@array";
liefert für
für $mod = 1: t e s t t e s t
für $mod = 2: te st t es t
für $mod = 3: tes t t est
grüssle
sveni
...
michael.sprick
09-08-2006, 16:11
Oder via regex:
push(@Array,$&) while $String=~m/.{1,2}/xg;
Chakotay
09-08-2006, 16:58
@sveni danke für die hilfe
hat bei mir aber leider lauter fehler hervorgerufen ?
chakotay@VOYAGER:~/.xchat2/CS-MODULE$ ./a-test.pl
Global symbol "$i" requires explicit package name at ./a-test.pl line 22.
Global symbol "$i" requires explicit package name at ./a-test.pl line 22.
Global symbol "$i" requires explicit package name at ./a-test.pl line 22.
Global symbol "$i" requires explicit package name at ./a-test.pl line 23.
Global symbol "$i" requires explicit package name at ./a-test.pl line 26.
Execution of ./a-test.pl aborted due to compilation errors.
chakotay@VOYAGER:~/.xchat2/CS-MODULE$
trotzdem danke (bin ja für jede hilfe dankbar :-D)
@michael.sprick
hat wie immer zum sofortigen erfolg geführt *glücklich bin*
weisst du sowas einfach oder hast du ne gute geheim seite zum nachschlagen (wenn ja her damit^^)
michael.sprick
09-08-2006, 21:02
Ich hab ein paar gute Bücher im Regal stehen und bereits selber viele Probleme gehabt ;).
Ansonsten ist perldoc immer einen Blick wert ;)
zum Beispiel:
perldoc -f split
perldoc perlre
perldoc perlretut
Zu den Fehlermeldungen:
Vermutlich nutzt Du das Pragma 'strict' - was übrigens auch gut so ist ;)
Ändere die for-Schleife mal so:
for(my $i=0; $i < length($string); $i++)
{
if($i % $mod == 0)
{
$arrayIndex++;
}
...
}
# oder noch besser:
my $i=0;
for($i=0; $i < length($string); $i++)
{
if($i % $mod == 0)
{
$arrayIndex++;
}
...
}
sorry. mein fehler! Ich hab leider mal wieder das Pragam 'strict' weggelassen.
Dann läuft das natürlich nicht so wie ich das gemacht habe.
danke @michael.sprick ... man sollte sich das gleich angewöhnen, da man
sich so viele, schwierig nachvollziehbare Fehler ersparen kann!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.