vergelijken van twee strings.

Status
Niet open voor verdere reacties.

dadio25

Gebruiker
Lid geworden
17 mrt 2009
Berichten
39
Hallo,

Ik heb de volgende if statement.

If StrComp(Left(nieuwepositie, Len(comparestring)), comparestring) = 0 Then

Als de string nieuwepositie bijv User1 bevat en de string comparestring _Hints dan krijg ik dat dit waar is, maar dit moet niet. Heb het ook geprobeerd met vbTextCompare erbij en dan gebeurde precies hetzelfde.

Kan iemand mij vertellen waarom dit fout gaat?

groeten dadio25
 
Code:
If instr(nieuwepositie, comparestring)= 1 Then

Dit betekent:
als de tekstreeks 'nieuwepositie' begint met de tekstreeks 'comparestring'
 
Hallo snb,

Dank je alweer:) voor je antwoord.

maar ik moet elke keer de linkerkant van nieuwepositie vergelijken met comparestring.... Dit is omdat nieuwepositie een best lange string kan zijn bijv:

Channel_0_User_Defined.User.User1

Als ik dan in de comparestring de waarde "User" zou hebben. Moet dit niet gelijk zijn.
Daarom pak ik de linkerkant van de string nieuwepositie en vergelijk ik die met comparestring en de hoeveelheid tekens dat vergeleken moet worden doe ik met Len(comparestring)

Maar als ik alleen op lengte vergelijk dan kan het voorkomen dat ik een comparestring krijg met dezelfde lengte maar niet de juiste waarde vandaar dat ik voor StrComp gekozen heb.
 
Volgens mij snap je mijn suggestie niet.
Voorbeeld

als de te onderzoeken reeks is:
"aaahhhkkk"
en de vergelijkings tekstreeks is
"hhh"
dan
instr("aaahhhkkk","hhh") levert 4 als resultaat.

als de vergelijkingstekstreeks "aaa" is
instr("aaahhhkkk","aaa") heeft dan 1 als resulaat.

Met andere woorden: dan begint de te onderzoeken tekstreeks met de vergelijkingstekstreeks.
En daanaar ben je opzoek.

Dus het vervolg:
Code:
If instr("aaahhhkkk","aaa")=1 then nieuwepositie=Mid("aaahhhkkk",len("aaa"))

Als de tekstreeks begint met vname, haal dan vname van het begin van de tekstreeks af.

Code:
nieuwepositie="Channel_0_User_Defined.User.User1"
vname="Channel_0_User_Defined"
if instr(nieuwepositie,vname)=1 then nieuwepositie=mid(nieuwepositie,len(vname))

nieuwepositie heeft na deze code de waarde ".User.User1"
 
Laatst bewerkt:
Hmmm ,

Neej je hebt gelijk ik snapte hem idd even niet :confused: , maar dit zou idd beter kunnen werken zeker als ik zorg dat alleen de linkerkant elke keer vergeleken wordt voor de lengte van de string waarmee ik hem wil vergelijken.

Ok ff zien of ik hem echt goed snap....

If Instr(nieuwepositie, comparestring) = 1 Then "ga door met me programma"

Ik ga hem proberen hartstikke bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan