当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP 高亮显示不区分大小写的关键字

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 高亮显示不区分大小写的关键字


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 232 ::
收藏到网摘: n/a

今日,碰到一个问题:如何在网页中高亮显示不区分大小写的关键字 例如:文本abcaBcabCaBCabcaBCa,关键字bc,在不区分大小写的情况,一共有6个匹配项。
  则在网页中显示的是abcaBcabCaBCabcaBCa。
  很多人,想到是replace函数。原型为
    Replace(string,find,replacewith[,start[,count[,compare]]])
    string    必选项,字符串表达式,包含要替代的子字符串
    find     必选项,被搜索的子字符串
    replacewith 必选项,用于替换的子字符串
    start    可选项,开始搜索子字符串的位置,默认是1
    count    可选项,执行子字符串替换的数目,默认是-1,表示进行所有可能的替换
    compare  可选项,比较方式,0:二进制比较;1:文本比较
  
  虽然最后一个参数能解决不区分大小写的问题,那么该替换为什么呢?
  因为从示例上看,bc,Bc,bC,BC都被搜索到了,却不能统一替换为一个文本
  那么,利用Instr这个函数来协助我们吧。
  从源字符串,自左向右搜索,每找到一个匹配项。就按三步走
    1、将匹配项左边的字符串输出
    2、将匹配项套上样式<span>后输出
    3、重复上两步,继续搜索右边的字符串,直到搜索结尾
  代码如下:
复制代码 代码如下:

public function HighLight(S,F)
dim tL,tM,tR,k
tL=""
tM=""
tR=S
k=instr(1,tR,F,1)
do while k>0
tL=tL & left(tR,k-1)
tM=mid(tR,k,len(F))
tL=tL & "<span style='color:red'>" & tM & "</span>"
tR=right(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
loop
HighLight=tL & tR
end function

  调用的时候,代码如下:
  
复制代码 代码如下:

tS="abcaBcabCaBCabcaBCa"
tF="bc"
response.Write(tS)
response.Write("<br/>")
response.Write(HighLight(tS,tF))

  这样就实现了如开头实例的样子
  另一方面,思考是否用正则表达式更方便呢?尝试了几次,没有结果。看看哪位高手用正则来解决这个问题。
  写了文章以后,网友“愚公”给出了正则表达式的解法。经测试,正确无误。现将他的代码贴于后。非常感谢他。
  
代码
复制代码 代码如下:

Function HighLight(S,F)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "(" & F & ")"
HighLight = regEx.Replace(S,"<span style='color:red'>$1</span>")
End Function
Response.write HighLight("abcaBcabCaBCabcaBCa","bc")