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

简介:

 今日,碰到一个问题:如何在网页中高亮显示不区分大小写的关键字

  例如:文本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))

 

  这样就实现了如开头实例的样子

  另一方面,思考是否用正则表达式更方便呢?尝试了几次,没有结果。看看哪位高手用正则来解决这个问题。

 

  写了文章以后,网友“愚公”给出了正则表达式的解法。经测试,正确无误。现将他的代码贴于后。非常感谢他。

  

复制代码
ExpandedBlockStart.gif 代码
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 " )
复制代码

 

  本文转自万仓一黍博客园博客,原文链接http://www.cnblogs.com/grenet/archive/2010/01/21/1653626.html:,如需转载请自行联系原作者


相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
43 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
117 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
113 0
|
9月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
145 0
|
9月前
|
开发框架 缓存 JSON
ASP.NET Core MVC 从入门到精通之Filter
ASP.NET Core MVC 从入门到精通之Filter
120 0
|
9月前
|
开发框架 前端开发 .NET
ASP.NET Core MVC 从入门到精通之自动映射(二)
ASP.NET Core MVC 从入门到精通之自动映射(二)
60 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
107 0