65.9K
CodeProject is changing. Read more.
Home

Keyword highlighting in ASP

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1 vote)

Jun 16, 2000

viewsIcon

141023

A simple function to highlight keywords in ASP

Sample Image - Highlight.gif

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>")