Schrift
[thread]6798[/thread]

Arrayindex eines Elements?



<< >> 6 Einträge, 1 Seite
joa
 2005-03-17 16:22
#52735 #52735
User since
2005-03-17
2 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich habe folgendes Problem: ich suche in einem Array nach allen Elementen, die auf einen reg. Ausdruck passen.
Wie kann ich herausfinden, an welcher Stelle (= als welches Element) das Gefundene auftritt?
Es sieht ungefähr so aus:
Code: (dl )
1
2
3
4
foreach (@inhalt =~ /ausdruck/) {
- speichere die Position von $_
- speichere n Elemente vor und nach $_
(dazu brauche ich eben den Index) }

Wie kann ich den Index von einem Element ermitteln?
Ist vielleicht-wahrscheinlich eine Anfängerfrage, aber... weiß jemand die Lösung?

einen großen Dankschön,
joa
GwenDragon
 2005-03-17 16:33
#52736 #52736
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
# Ganz für Anfänger;)

for (my $i = 0; $i < @inhalt; $i++) {
 if ( $inhalt[$i] =~ /ausdruck/ ) {
   my $pos = $i; # das ist der Index 
   # und so weiter
 }
}
\n\n

<!--EDIT|GwenDragon|1111070063-->
renee
 2005-03-17 16:35
#52737 #52737
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
for(0..$#inhalt){
print $_ if($inhalt[$_] =~ /ausdruck/);
}
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/
betterworld
 2005-03-17 16:37
#52738 #52738
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Deine foreach-Zeile duerfte kaum funktionieren, weil man "=~" afaik nicht auf Arrays anwenden kann.

Ich wuerde das so machen:
Code (perl): (dl )
1
2
3
4
5
for my $count (0..$#array) {
  if ($array[$count] =~ /ausdruck/) {
    print "An der Stelle $count habe ich etwas gefunden."
  }
}

(ungetestet)\n\n

<!--EDIT|betterworld|1111070337-->
joa
 2005-03-17 17:04
#52739 #52739
User since
2005-03-17
2 Artikel
BenutzerIn
[default_avatar]
jetzt ist alles wieder klar... ;-) vielen lieben Dank für die Hilfe!
pKai
 2005-03-17 17:45
#52740 #52740
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=joa,17.Mar..2005, 15:22]
Code: (dl )
1
2
3
4
foreach (@inhalt =~ /ausdruck/) {
- speichere die Position von $_
- speichere n Elemente vor und nach $_
(dazu brauche ich eben den Index) }
[/quote]
Wenn die Position nur für die Manipulation verwendet werden soll und nachher nicht mehr benötigt wird (ändert sich durch Einfügen davor ja auch noch, zumindest im Ergebnis),
dann vielleicht auch als "One"-liner ohne jegliche Bestimmung der Position(en) ;)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;

my @vor = qw(a b c);
my @nach = qw(x y z);
my @Liste = qw(7 6 5 4 3);

my $re = qr(^6$);

my @Neu = map {
/$re/
?
(@vor, $_, @nach)
:
($_)
} @Liste;

print @Neu, $/;

Edit: Editier-Artefakte bereinigt\n\n

<!--EDIT|pKai|1111091176-->
I sense a soul in search of answers.
<< >> 6 Einträge, 1 Seite



View all threads created 2005-03-17 16:22.