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

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 352 ::
收藏到网摘: 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")