Test for exact match in string

  • Thread starter Thread starter Jeremy Gollehon
  • Start date Start date
J

Jeremy Gollehon

OK, this one is really getting to me. Without using Excel specific
functions, how can I test if I've found the exact match of a word or phrase?
I've came up with the code below, which works great in most cases (Test1 and
Test2). My problem is I could be testing html source code (Test3). My head
hurts, so I post here in hopes of some help. Thanks!


Sub tester()
Dim vSplit As Variant
Dim bExactMatch As Boolean
Dim sTest1 As Variant
Dim sTest2 As Variant
Dim sTest3 As Variant


sTest1 = "this is a test, here's the stuff you wanted. "
vSplit = Split(sTest1, " here's ")
bExactMatch = UBound(vSplit) <> 0
Debug.Print "Test1: " & bExactMatch

sTest2 = "this is a test, there's the stuff you wanted. "
vSplit = Split(sTest2, " here's ")
bExactMatch = UBound(vSplit) <> 0
Debug.Print "Test2: " & bExactMatch

sTest3 = "<b>here's</b> the stuff you wanted. "
vSplit = Split(sTest3, " here's ")
bExactMatch = UBound(vSplit) <> 0
Debug.Print "Test3: " & bExactMatch

End Sub
 
OK, so after writing this question I thought of at least one answer, replace
the tag identifiers with spaces. This might not be the most elegant
solution, but it works.

If you've got something better, I'd love to see it. Thanks.

Sub tester()

sTest3 = "<b>here's</b> the stuff you wanted. "
sTest3 = Replace(sTest3, ">", " ")
sTest3 = Replace(sTest3, "<", " ")
vSplit = Split(sTest3, " here's ")
bExactMatch = UBound(vSplit) <> 0
Debug.Print "Test3: " & bExactMatch

End Sub

<snip>
 
I might be overlooking something, but what is wrong with using the Instr
function?

RBS
 
I don't know. I think I've gone crazy. Time to stop thinking.
I believe the following function will work in all cases as long as I replace
the undesired items that can be surrounding the LookFor words (punctuation
and html tag indicators) with spaces before calling it.
Thanks RB.

Function StrExactMatch(sLookIn As String, sLookFor As String) As Boolean
'- Add padding to sLookin in case sLookFor is found
' at the very beginning or very end of the string.
'- Add padding to sLookFor to be sure we're getting an exact match
StrExactMatch = InStr(" " & sLookIn & " ", " " & sLookFor & " ") > 0
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top