16. juni 2005 - 00:05Der 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... ??
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)
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
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.