Avatar billede dank Nybegynder
09. maj 2003 - 01:51 Der er 2 kommentarer og
2 løsninger

Løbe igenne array

Hey.. jeg har

@array som bestar af f.eks.:

xxx xxx xxx iii hfgsd wersdf ghjfsdf iii 


Hvordan "løber" jeg den igennem og sletter alt imellem iii og iii?

Kan man det, og hvordan?
Avatar billede thomasledet Nybegynder
09. maj 2003 - 02:11 #1
selvfølgelig kan man det... den ikke så pæne måde er noget i retning af

kan ikke lige finde en smartere måde på denne tid af døgnet...

#!/usr/bin/perl

my @array=('xxx', 'xxx', 'xxx', 'iii', 'hfgsd', 'wersdf', 'ghjfsdf', 'iii');

my @temparray = ();
my $test = 0;

print "array: \n";
print @array;

foreach $value (@array) {
        if (($test%2) == 0) {
                push(@temparray,$value);
        }
        if ($value eq 'iii') {
                $test++;
        }
}

@array = @temparray;

print "array: \n";
print @array;
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 07:40 #2
Hvis du kender positionerne er det nemt (indbygget funktion:
splice()) - ellers må vi lede efter dem. Eksempel:

@a = ('a','b','c','x','d','e','f','g','x','h','i');
@b = ();

for ($i=0; $i<=$#a; $i++) {
  if ($a[$i] eq 'x') {
    push(@b,$i);
  }
}

if ($#b>=1) {
  splice(@a,$b[0],$b[1]-$b[0]+1);
  print join(',',@a);
} else {
  print 'Ikke fundet';
}

print "\n";
Avatar billede dank Nybegynder
09. maj 2003 - 23:55 #3
Jeg prøver at lære, så hvis jeg ydmigt må spørger om:

    if (($test%2) == 0) {

Hvad i alverden betyder %2 i denne if?

og det samme med

  if ($#b>=1) {


Her undrer jeg mig over $#b (hvad betyder denne # i denne sammenhæng?)

p.s. sorry hvis dette er banalt, men Perl er ret nyt for mig.
Avatar billede erikjacobsen Ekspert
10. maj 2003 - 00:02 #4
Når @b er et array, angive $#b nummeret på det største
index. Skal der som her fx være 2 elementer, nemlig
nummer 0 og nummer 1, så skal nummeret på det højeste
være 1 (eller evt højere)

Det hos Thomas er om tallet er lige eller ej (% er modulus
operatoren)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger analytisk stærk og erfaren medarbejder i Hvidovre

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst