Så här månne?
For i = [b]1[/b] To Len(variabel1)
If InStr(variabel2, Mid(variabel1, i, 1)) = 0 Then variabel3 = variabel3 & Mid(variabel1, i, 1)
Next
Red. Ändrade en nolla till en etta...
7 svar · 351 visningar · startad av doggelito
hur löser man detta smidigast?
har två strängar, en "statisk" och en "dynamisk"
ex.
varabel1 = "1234567" 'statisk, ändras aldrig
variabel2 = "136" 'dynamisk, kan variera
nu vill jag i en 3:e variabel få värdet som skiljer dessa åt, men hur gör jag?
variabel3 = "2457"
obs! värdena är i strängformat, inte tal!
Så här månne?
For i = [b]1[/b] To Len(variabel1)
If InStr(variabel2, Mid(variabel1, i, 1)) = 0 Then variabel3 = variabel3 & Mid(variabel1, i, 1)
Next
Red. Ändrade en nolla till en etta...
Jag fick inte Engines' kod att fungera.. :l
Ogiltigt proceduranrop eller argument.: 'Mid'
Frestade på med en egen lösning som jämnför bägge strängarna.
Den torde lösa problemet (hoppas jag) ;) :
[red]<%
Function checkDiff(value1, value2)
For i = 1 To Len(value1)
x = Mid(value1, i, 1)
If InStr(value2,x) = False Then newStr = newStr & x
Next
For i = 1 To Len(value2)
x = Mid(value2, i, 1)
If InStr(value1,x) = False Then newStr = newStr & x
Next
checkDiff = newStr
End Function
variabel1 = "1234567"
variabel2 = "136"
variabel3 = checkDiff(variabel1,variabel2)
%>[/red]
Ops... jag har lite svårt för VBScripts indexhantering...
Sätt att loopen ska börja på 1 istället för 0, så fungerar det finfint.
Engine^ skrev:
Ops... jag har lite svårt för VBScripts indexhantering...
Sätt att loopen ska börja på 1 istället för 0, så fungerar det finfint.
Förstod det, men jag får den inte att fungera riktigt ändå, man måste ju kolla
genom bägge strängarna för att hitta alla skillnader.
Testa följande scenario:
[red]<%
variabel1 = "1234567"
variabel2 = "13689"
For i = 1 To Len(variabel1)
If InStr(variabel2, Mid(variabel1, i, 1)) = 0 Then variabel3 = variabel3 & Mid(variabel1, i, 1)
Next
Response.Write variabel3
%>[/red]
I Variabel2 finns 8 och 9, dessa finns inte med i variabel1..
Dessa kommer ju inte med i variabel3 trots att de borde det.
Därför måste man köra en dubbelkoll av bägge strängarna.
glömde skriva, de dynamiska talen är alltid mellan de statiska talen!
Engine^, din kod funkar utmärkt!
Palle, helt rätt, dock behöver jag inte det i detta fall! :)
Trevligt... det går att göra habrovinkellösningar ibland. Förutsättningen är nog att herr Murphy tittar åt ett annat håll :)