ASP中经常会用到replace,比如在查找时,要求高度显示被查找的字符,怎么不区分大小写替换字符?下面介绍两个方法,一个是利用replace 自身函数,另一种是用正则 方法一: 直接用ASP自带函数replace 这也是最简单的方法 title=replace(title,"DF","SD",1,-1,vbTextCompare) replace函数参数详解: 参数1:源字符串 参数2:要被替换的字符 参数3:新的字符。,既,要将源字符串中的某些字符,替换成新指定的字符 参数4:值为1.指定从第一个字符开始搜索该字符串 参数5:值为-1 指定每一个子串都要被替换 参数6:值为1 指定字符串的比较不区分大小写。 (高亮显示关键字)的两个函数 方法2:用正则不区分大小写替换指定字符 以下是函数源代码: <% "下面也有两种方法,大家看情况使用:) Function Takeout(patrn,string1,colors) ’提取搜索关键字匹配文字 Dim regEx, Match, Matches, tt’ 建立变量。 Set regEx = New RegExp ’ 建立正则表达式。 regEx.Pattern = patrn ’ 设置模式。 regEx.IgnoreCase = True ’ 设置是否区分大小写。 regEx.Global = True’ 设置全局可用性。 Set Matches = regEx.Execute(string1)’ 执行搜索。 For Each Match in Matches ’ 遍历 Matches 集合。 RetStr = RetStr & Match.Value & " " Next RetStr = trim(RetStr) if instr(RetStr," ")>0 then for tt = 0 to ubound(split(RetStr," ")) string1 = replace(string1,split(RetStr," ")(tt),""&split(RetStr," ")(tt)&"") next else string1 = replace(string1,RetStr,""&RetStr&"") end if Takeout = string1 End Function response.write Takeout("NAkuO.cOM", "Nakuo.com囊括网络","red") Function Highlight(strContent,keyword) ’标记高亮关键字 Dim RegEx Set RegEx=new RegExp RegEx.IgnoreCase =True ’不区分大小写 RegEx.Global=True Dim ArrayKeyword,i ArrayKeyword = Split(keyword," ")’用空格隔开的多关键字 For i=0 To Ubound(ArrayKeyword) RegEx.Pattern="("&ArrayKeyword(i)&")" strContent=RegEx.Replace(strContent,"$1" ) Next Set RegEx=Nothing Highlight=strContent End Function response.write Highlight("yici.net依次网","yici.net") %> 被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。 Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已被替换为 string2。如果没有找到匹配的文本,将返回原来的 string1 的副本。 下面的例子说明了 Replace 方法的用法。 Function ReplaceTest(patrn, replStr) Dim regEx, str1 建立变量。 str1 = "The quick brown fox jumped over the lazy dog." Set regEx = New RegExp 建立正则表达式。 regEx.Pattern = patrn 设置模式。 regEx.IgnoreCase = True 设置是否区分大小写。 ReplaceTest = regEx.Replace(str1, replStr) 作替换。 End Function MsgBox(ReplaceTest("fox", "cat")) 将 fox 替换为 cat。 ;另外,Replace 方法在模式中替换 subexpressions 。 下面对以前示例中函数的调用,替换了原字符串中的所有字对: MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1")) 交换词对. 需求的脚本语言在5.0以上 Replace("Http://www.microsoft.com","http://",1,-1,vbTextCompare) ============================================= Replace函数 描述 返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。 语法 Replace(expression, find, replacewith[, start[, count[, compare]]]) Replace函数语法有如下几部分: 部分 描述 expression 必需的。字符串表达式,包含要替换的子字符串。 find 必需的。要搜索到的子字符串。 replacewith 必需的。用来替换的子字符串。 start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。 count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。 compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。 设置值 compare参数的设置值如下: 常数 值 描述 vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。 vbBinaryCompare 0 执行二进制比较。 vbTextCompare 1 执行文字比较。 vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 返回值 Replace的返回值如下: 如果 Replace返回值 expression长度为零 零长度字符串("")。 expression为Null 一个错误。 find长度为零 expression的复本。 replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。 start > Len(expression) 长度为零的字符串。 count is 0 expression.的复本。 说明 Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。
|