Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5899[/thread]

Einzelnes Zeichen aus einem Array entfernen

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2003-11-12 10:46
#71327 #71327
Hallo,

ich trau mich fast nicht zu fragen, aber ich bin noch nicht sehr stark eingearbeitet in Perl und hab ein,
zumindest für mich, unlösbares Problem!

Ich habe einen Array der so aufgebaut ist:
(,Wort1 ,Wort2 ,Wort3 ,Wort4)
Jetzt möchte ich das erste Zeichen (,) aus dem Array entfernen.
Das geht mit einem regulären Ausdruck oder?
Wie funktionierts?

Vielen Dank für die Hilfe,

Schönen Gruss,

Matthias
havi
 2003-11-12 10:52
#71328 #71328
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use warnings;
use strict;

my @array = ",Wort1 ,Wort2 ,Wort3 ,Wort4";

map {
s%^,%%g;
} @array;

print @array;

1;


Gruss
Ronnie
 2003-11-12 11:15
#71329 #71329
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@havi: müsste es nicht my @array = qw(,Wort1 ,Wort2 ,Wort3 ,Wort4); sein?
Crian
 2003-11-12 11:19
#71330 #71330
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Für mich sieht es so aus, als wäre vorn in Deinem Array ein undefinierter Wert.

Probier mal aus, was

Code: (dl )
1
2
use Data::Dumper;
print Dumper \@deinarray;


ausgibt.

Um einen undefinierten Wert an erster Stelle des Arrays zu entfernen, kannst Du einfach

Code: (dl )
shift @deinarray;


ausführen, das entnimmt dem Array das erste Element (den undefinierten Wert), normalerweise weist man diesen Wert einem Skalar zu, aber hier will man ihn ja einfach nur wegschmeissen.

HTH
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2003-11-12 11:21
#71331 #71331
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
[quote=Guest,12.11.2003, 09:46]Ich habe einen Array der so aufgebaut ist:
(,Wort1 ,Wort2 ,Wort3 ,Wort4)[/quote]
Die Frage ist, ist Dein Array so

Code: (dl )
(",Wort1", ",Wort2", ",Wort3", ",Wort4")


aufgebaut und Du möchtest aus jedem Element des Arrays das erste Zeichen entfernen, oder ist Dein Array so

Code: (dl )
(undef, "Wort1", "Wort2", "Wort3", "Wort4")


aufgebaut und Du möchtest das erste Element des Arrays loswerden? (Im zweiten Fall siehe meinen ersten Beitrag.)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
havi
 2003-11-12 11:23
#71332 #71332
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=Ronnie,12.11.2003, 10:15]@havi: müsste es nicht my @array =  qw(,Wort1 ,Wort2 ,Wort3 ,Wort4); sein?[/quote]
Nein!
Crian
 2003-11-12 11:33
#71333 #71333
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Naja, es ist eben genau die Frage, wie er es gemeint hat (siehe meine beiden Beiträge weiter oben). Ich vermute, es ist ein undefinierter Wert an Stelle 1 (0) des Arrays, oder vielleicht ein leerer String.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Arasiel
 2003-11-12 12:12
#71334 #71334
User since
2003-11-12
39 Artikel
BenutzerIn
[default_avatar]
Hallo und danke für die schnelle Beantwortung der Frage.
Ich habs jetzt so gelöst:

map { s%^,%%g; } $array[0];

Das entfernt mir dann das allererste Komma. Die anderen Komma will ich beibehalten.

Hab mich vorher beim Array verschrieben. Es lautet natürluch so:
my @array = qw (,Wort1 ,Wort2 ,Wort3 ,Wort4)

Die obig genannte Lösung ist bestimmt nicht die Beste, aber hauptsache es läuft erstmals.

Schönen Gruss.
havi
 2003-11-12 12:16
#71335 #71335
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Dazu brauchst du aber keine map.

Code: (dl )
$array[0] =~ s%^,%%g;


Das tut es auch...

Gruss
Arasiel
 2003-11-12 12:22
#71336 #71336
User since
2003-11-12
39 Artikel
BenutzerIn
[default_avatar]
Danke für die weitere Hilfe!
Der letzte Eintrag sieht wenigstens etwas einfacher aus.
Denn ich habe (noch) keine Ahnung, was "map" eigentlich macht oder auch "use Data::Dumper; print Dumper \@deinarray;"

Ich habe zwar Spass an Perl, aber es gibt noch unendlich viel zu lernen... :)

Gruss.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2003-11-12 10:46.