Keyword highlighting in ASP





5.00/5 (1 vote)
Jun 16, 2000

141023
A simple function to highlight keywords in ASP
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>")