Avatar billede mini-me Nybegynder
16. juni 2005 - 00:05 Der er 6 kommentarer og
1 løsning

Undgå dubletter i streng..

Jeg har en database streng som indeholder "1,3,4,5,6" så vil jeg tilføje nogle ekstra punkter til denne streng, men vil undgå dubletter... eks. tilføjer jeg 1,8,9,10 --- Men 1 findes jo i forvejen... hvordan laver jeg et løsning hvor jeg løber min streng igennem og checkker om den findes og hvis den gør springer den over... ??
Avatar billede ksoren Nybegynder
16. juni 2005 - 00:24 #1
Function AddNumber(numbers, str)
    Dim check, aNum, aStr, i, j
    aNum = Split(numbers, ",")
    aStr = Split(str, ",")

    For i=0 To UBound(aNum)
        'kontroller om nummeret allerede eksisterer
        check = False
        For j=0 To UBound(aStr)
            If aNum(i) = aStr(j) Then
                check = True
                Exit For
            End If
        Next
       
        If Not Check Then
            str = str & "," & aNum(i)
        End If

    Next
    AddNumber = str
End Function

str = "1,2,3,4,6"
num = "1,8,9,10"
str = AddNumber(num, str)
Avatar billede mini-me Nybegynder
16. juni 2005 - 00:39 #2
Hvordan får jeg så udtrækket af den nye streng den har genererret ??
Avatar billede mini-me Nybegynder
16. juni 2005 - 00:46 #3
Det er ved at blive sent, jeg har fået det til at virke smid point det er dine ;)
Avatar billede softspot Forsker
16. juni 2005 - 00:57 #4
Nå, nu havde jeg ellers lige en anden version som måske ville performe bedre med større datamængder... du får den lige alligevel :)

function mergeNumbers(strOriginal, strNewNumbers)
  ' Sæt komma omkring alle tallene for at gøre søgningen lettere
  strOrigNums = "," & strOriginal & ","
   
  ' Streng til at indeholde nye tal
  strNewExclusiveNums = ""
   
  ' Lav et array med alle de nye tal, så det er lettere at gennemløbe med et loop
  arrNewNumbers = Split(strNewNumbers, ",")
  for idx = 0 to ubound(arrNewNumbers)
    ' se om tallet eksisterer (sæt komma omkring for at sikre
    ' at det kun er hele tallet der findes)
    if instr(1, strOrigNums, "," & arrNewNumbers(idx) & ",") = 0 then
      ' Hvis tallet ikke eksisterer i forvejen gemmes det
      strNewExclusiveNums = strNewExclusiveNums & "," & arrNewNumbers(idx)
    end if
  next
   
  ' sammensæt de eksisterende tal med de nye og returner den nye streng af tal
  mergeNumbers = strOriginal & strNewExclusiveNums
end function

strNumbers = "1,5,8,12,15,19,20,21,32,56,67,77,78,79,80,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100"
strNewNumbers = "1,5,6,78,89,90"
Response.Write "Merge " & strNumbers & " with " & strNewNumbers & "<br>"
Response.Write mergeNumbers(strNumbers, strNewNumbers)
Avatar billede mini-me Nybegynder
20. september 2005 - 13:10 #5
I kan begge ligge et svar,
Avatar billede softspot Forsker
20. september 2005 - 13:12 #6
OK :)
Avatar billede softspot Forsker
18. september 2006 - 12:56 #7
Tak for point :)
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