Avatar billede s_raagaard Nybegynder
07. marts 2002 - 17:58 Der er 8 kommentarer og
1 løsning

Sammenligne to strenge

Kan man sammenligne to kommasepererede strenge, for at undersøge om der er macthende items?

noget alá:

VarStrA="1,23,56,340"
VarStrB="8,25,56,321"

Vcompare = compare((VarStrA,VarStrB),",")

response.write("Der er" & Vcompare & "der er fælles")


/s



Avatar billede invisibleman Nybegynder
07. marts 2002 - 18:07 #1
Du er nødt til at splitte strengene med Split() og så løbe arrayene igennem:

<%
  VarStrA = "1,23,56,340"
  VarStrB = "8,25,56,321"
  arrStrA = Split(VarStrA, ",")
  arrStrB = Split(VarStrB, ",")

  For intIndex = 0 To UBound(arrStrA)
    If arrStrA(intIndex) = arrStrB(intIndex) Then intMatches = intMatches + 1
  Next

  Response.Write "Der er " & intMatches & " der er fælles."
%>
Avatar billede coltau Juniormester
07. marts 2002 - 18:14 #2
Jeg har ikke haft mulighed for at teste det. :-)

s = Split(VarStrA)
VCompare = 0
for Each item in s
  if inStr(VarStrB, Item) > 0 then
    VCompare = VCompare + 1 
  end if
next

response.write("Der er" & Vcompare & "der er fælles")
Avatar billede fireworld Nybegynder
07. marts 2002 - 19:40 #3
coltau den tror jeg ikke virker....

hvis nu 2 bliver fundet ... 2 kan jo godt være i 23 og det er jo ikke det samme...

den første er vist god nok
Avatar billede coltau Juniormester
07. marts 2002 - 19:46 #4
Ja der er forskel på de to måder.
invisibleman's metode kontrollere om første tal i VarStrA = første tal i VarStrB osv ...

Mit genneløb "skulle" tælle hvormange gange de enkelte tal i VarStrA indgår i VarStrB

Det vil sige de giver forskellige resultater.
Avatar billede invisibleman Nybegynder
07. marts 2002 - 19:51 #5
Tror han ville tælle om første tal i VarStrA var det samme som første tal i VarStrB and so on ?
Avatar billede fireworld Nybegynder
07. marts 2002 - 19:52 #6
<%

  VarStrA = "1,23,56,340"
  VarStrB = "8,25,56,321"
  arrStrA = Split(VarStrA, ",")
  arrStrB = Split(VarStrB, ",")

donear=0
   
do until donear >= arrStrA.Count
  For intIndex = 0 To UBound(arrStrB)
    If arrStrA(donear) = arrStrB(intIndex) Then   
    intMatches = intMatches + 1
  Next
donear=donear + 1
loop

Response.Write "Der er " & intMatches & " der er fælles."
%> 

burde det ikek virke?
Avatar billede s_raagaard Nybegynder
07. marts 2002 - 21:24 #7
De strenge der matches behøver ikka at have de matchende tal på samme sted i strengen:

VarStrA = "1,23,56,340"
  VarStrB = "8,25,27,33,44,56,321"

Skal give et match på een, eller blot true for match større end 0


/s
Avatar billede coltau Juniormester
07. marts 2002 - 22:07 #8
Oky - i programmering gælder alle kneb.

VarStrA = "," & VarStrA & "," ' Sikre at alle tal er omklamret af komma
VarStrB = "," & VarStrB & "," ' på begge sider.
s = Split(VarStrA, ",")
VCompare = 0
for Each item in s
  if inStr(VarStrB, "," & Item & ",") > 0 then ' Find tallet med , omkring
    VCompare = VCompare + 1
  end if
next

response.write("Der er" & Vcompare & "der er fælles")

Det er måske ikke så flot men det virker.
Avatar billede s_raagaard Nybegynder
07. marts 2002 - 22:20 #9
arrStrA = Split(VarStrA, ",")
arrStrB = Split(VarStrB, ",")
For Each intIndexA in arrStrA
    For Each intIndexB in arrStrB
    if intIndexA=intIndexB then
          Response.Write(intIndexA)
    end if
    Next
  Next
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