Introduction
While working on the my version of the message board ASP scripts I have found myself in the
need of a function that would highlight certain keywords within the text of the messages.
My first idea was to use VBScript's built-in Replace()
function. The only
problem with Replace was that I was not able to preserve the original case of the letters within
the text. Consider following example:
myText = "Using Replace function to make word REPLACE bold."
myText = Replace(myText, "replace", "<b>replace</b>", 1, -1, 1)
The resulting string will be "Using <b>replace</b> function to make word <b>replace</b> bold.".
It did make all the words "Replace" bold, but it also changed the case of these words from their
original case.
This is why I had to write this little Highlight
function. There is nothing
special about this function, but it does what I needed it to do and I hope that you could use
it somewhere in your ASP scripts as well. So here it is:
'*****************************************************************************
' HIGHLIGHT function will search text for a specific string
' When string is found it will be surrounded by supplied strings
'
' NOTE: Unfortunately Replace() function does not preserve the original case
' of the found string. This function does.
'
' Parameters:
' strText - string to search in
' strFind - string to look for
' strBefore - string to insert before the strFind
' strAfter - string to insert after the strFind
'
' Example:
' This will make all the instances of the word "the" bold
'
' Response.Write Highlight(strSomeText, "the", "<b>", "</b>")
'
Function Highlight(strText, strFind, strBefore, strAfter)
Dim nPos
Dim nLen
Dim nLenAll
nLen = Len(strFind)
nLenAll = nLen + Len(strBefore) + Len(strAfter) + 1
Highlight = strText
If nLen > 0 And Len(Highlight) > 0 Then
nPos = InStr(1, Highlight, strFind, 1)
Do While nPos > 0
Highlight = Left(Highlight, nPos - 1) & _
strBefore & Mid(Highlight, nPos, nLen) & strAfter & _
Mid(Highlight, nPos + nLen)
nPos = InStr(nPos + nLenAll, Highlight, strFind, 1)
Loop
End If
End Function
'********************************************************************************
To use this function - include it in your ASP scripts and call it like this:
Response.Write Highlight(myText, "someword", "<font color=red>", "</font>")