Avatar billede mortenbock Nybegynder
23. november 2005 - 10:53 Der er 8 kommentarer og
1 løsning

Test om streng findes i array

Hejsa.

Jeg har et array med telefonnumre. Hvordan tester jo om en variabel findes i det array?

Pseudokode:

If (nummer er i array) then
  gå til xxxx.htm
else
  gå til zzzz.htm
end if
Avatar billede nythjem Nybegynder
23. november 2005 - 12:02 #1
Hej Morten.

Du kan bruge inStr funktionen.
http://www.devguru.com/Technologies/vbscript/quickref/instr.html

:)
Avatar billede thesurfer Nybegynder
23. november 2005 - 12:07 #2
Eksempel:

s = ",12345678,12348765,87654321"

Læg mærke til "," foran det første telefon nummer.

If InStr(s, ",12348765") > - 1 then
' hvis placeringen af det man søger, er større end "-1" = findes
  response.redirect "findes.htm"
else
  response.redirect "findes_ikke.htm"
end if


Man kan også gøre sådan her:

dim s, arrS, fundet
s = "12345678,12348765,87654321"
fundet = false
arrS = split(s, ",") ' split strengen op ved ",")
for i = 0 to ubound(arrS)
  if arrS(i) = "12348765" then
    fundet = true
    exit for
  end if
next

if fundet = true then
  response.redirect "findes.htm"
else
  response.redirect "findes_ikke.htm"
end if

IF-sætningen kan også laves sådan her:

If fundet = true then response.redirect "findes.htm"
response.redirect "findes_ikke.htm" ' denne linie afvikles kun, hvis "fundet = false"

/theSurfer
Avatar billede mortenbock Nybegynder
23. november 2005 - 12:15 #3
Mit array er ikke en kommasepareret streng.... det er et array.

Dim numre(2)
numre(0) = "11111111"
numre(1) = "22222222"
numre(2) = "33333333"

Kan det virkelig ikke lade sig gøre at teste en værdi op imod et array?

InStr og Filter gøre principielt det samme. De vil returnere et resultat selvom den værdi man har testet på ikke er den samme som den der findes i strengen/arrayet.

Er løsningen bare at lave begrænsninger på hvilke værdiger der kan indtastes i filteret?
Avatar billede thesurfer Nybegynder
23. november 2005 - 12:17 #4
Sådan:

dim fundet
fundet = false
for i = 0 to ubound(numre)
  if numre(i) = "22222222" then ' erstat med tallet du vil teste
    fundet = true
    exit for
  end if
next

if fundet = true then
  response.redirect "findes.htm"
else
  response.redirect "findes_ikke.htm"
end if

/theSurfer
Avatar billede mortenbock Nybegynder
23. november 2005 - 12:39 #5
Jeg er endt med denne konstruktion.

dim tlf
tlf=Request.Form("nummer")

dim vm(1)
vm(0) = "00000000"
vm(1) = "11111111"

dim vb(7)
vb(0) = "22222222"
vb(1) = "33333333"
vb(2) = "44444444"
vb(3) = "55555555"
vb(4) = "66666666"
vb(5) = "77777777"
vb(6) = "88888888"
vb(7) = "99999999"

dim x,y
x = filter(vm, tlf)
y = filter(vb, tlf)

If UBound(x) => 0 Then
    If tlf = x(0) then
        Response.Redirect("vindermiddag.htm")
    end if
elseif UBound(x) => 0 Then
    if tlf = y(0) then
        Response.Redirect("vinderbiograf.htm")
    end if
else
    Response.Redirect("desvaerre.htm")
End if
Avatar billede mortenbock Nybegynder
23. november 2005 - 13:00 #6
thesurfer> smid et svar hvis du vil have lidt point.
Avatar billede thesurfer Nybegynder
23. november 2005 - 19:11 #7
Her er et svar :-)

/theSurfer
Avatar billede thesurfer Nybegynder
10. december 2005 - 01:21 #8
mortenbock> Du skal huske at markere mit navn i boksen, inden du klikker på Accepter-knappen.. ellers sker der ikke noget.. :-)

/theSurfer
Avatar billede mortenbock Nybegynder
10. december 2005 - 11:54 #9
Jeg var bare lidt langsom :-)
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