webForumDet fria alternativet

jämföra två strängar

ASP

7 svar · 351 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

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!

Medlem sedan dec. 20003 887 inlägg
#2

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...

Medlem sedan apr. 20003 174 inlägg
#3

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]
Medlem sedan dec. 20003 887 inlägg
#4

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.

Medlem sedan apr. 20003 174 inlägg
#5

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.

Medlem sedan juni 20003 076 inlägg
#6

glömde skriva, de dynamiska talen är alltid mellan de statiska talen!

Medlem sedan juni 20003 076 inlägg
#7

Engine^, din kod funkar utmärkt!
Palle, helt rätt, dock behöver jag inte det i detta fall! :)

Medlem sedan dec. 20003 887 inlägg
#8

Trevligt... det går att göra habrovinkellösningar ibland. Förutsättningen är nog att herr Murphy tittar åt ett annat håll :)

253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
114 ms — ändringar (db)