ASP中經(jīng)常會(huì)用到replace,比如在查找時(shí),要求高度顯示被查找的字符,怎么不區(qū)分大小寫(xiě)替換字符?下面介紹兩個(gè)方法,一個(gè)是利用replace 自身函數(shù),另一種是用正則
方法一: 直接用ASP自帶函數(shù)replace 這也是最簡(jiǎn)單的方法
title=replace(title,"DF","SD",1,-1,vbTextCompare)
replace函數(shù)參數(shù)詳解:
參數(shù)1:源字符串
參數(shù)2:要被替換的字符
參數(shù)3:新的字符。,既,要將源字符串中的某些字符,替換成新指定的字符
參數(shù)4:值為1.指定從第一個(gè)字符開(kāi)始搜索該字符串
參數(shù)5:值為-1 指定每一個(gè)子串都要被替換
參數(shù)6:值為1 指定字符串的比較不區(qū)分大小寫(xiě)。
(高亮顯示關(guān)鍵字)的兩個(gè)函數(shù)
方法2:用正則不區(qū)分大小寫(xiě)替換指定字符
以下是函數(shù)源代碼:
<%
"下面也有兩種方法,大家看情況使用:)
Function Takeout(patrn,string1,colors)
’提取搜索關(guān)鍵字匹配文字
Dim regEx, Match, Matches, tt ’ 建立變量。
Set regEx = New RegExp ’ 建立正則表達(dá)式。
regEx.Pattern = patrn ’ 設(shè)置模式。
regEx.IgnoreCase = True ’ 設(shè)置是否區(qū)分大小寫(xiě)。
regEx.Global = True ’ 設(shè)置全局可用性。
Set Matches = regEx.Execute(string1) ’ 執(zhí)行搜索。
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囊括網(wǎng)絡(luò)","red")
Function Highlight(strContent,keyword) ’標(biāo)記高亮關(guān)鍵字
Dim RegEx
Set RegEx=new RegExp
RegEx.IgnoreCase =True ’不區(qū)分大小寫(xiě)
RegEx.Global=True
Dim ArrayKeyword,i
ArrayKeyword = Split(keyword," ")’用空格隔開(kāi)的多關(guān)鍵字
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依次網(wǎng)","yici.net")
%>
被替換的文本的實(shí)際模式是通過(guò) RegExp 對(duì)象的 Pattern 屬性設(shè)置的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已被替換為 string2。如果沒(méi)有找到匹配的文本,將返回原來(lái)的 string1 的副本。
下面的例子說(shuō)明了 Replace 方法的用法。
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 建立變量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp 建立正則表達(dá)式。
regEx.Pattern = patrn 設(shè)置模式。
regEx.IgnoreCase = True 設(shè)置是否區(qū)分大小寫(xiě)。
ReplaceTest = regEx.Replace(str1, replStr) 作替換。
End Function
MsgBox(ReplaceTest("fox", "cat")) 將 fox 替換為 cat。
;另外,Replace 方法在模式中替換 subexpressions 。 下面對(duì)以前示例中函數(shù)的調(diào)用,替換了原字符串中的所有字對(duì):
MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1")) 交換詞對(duì).
需求的腳本語(yǔ)言在5.0以上
Replace("Http://www.microsoft.com","http://",1,-1,vbTextCompare)
=============================================
Replace函數(shù)
描述
返回一個(gè)字符串,該字符串中指定的子字符串已被替換成另一子字符串,并且替換發(fā)生的次數(shù)也是指定的。
語(yǔ)法
Replace(expression, find, replacewith[, start[, count[, compare]]])
Replace函數(shù)語(yǔ)法有如下幾部分:
部分 描述
expression 必需的。字符串表達(dá)式,包含要替換的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用來(lái)替換的子字符串。
start 可選的。在表達(dá)式中子字符串搜索的開(kāi)始位置。如果忽略,假定從1開(kāi)始。
count 可選的。子字符串進(jìn)行替換的次數(shù)。如果忽略,缺省值是 –1,它表明進(jìn)行所有可能的替換。
compare 可選的。數(shù)字值,表示判別子字符串時(shí)所用的比較方式。關(guān)于其值,請(qǐng)參閱“設(shè)置值”部分。
設(shè)置值
compare參數(shù)的設(shè)置值如下:
常數(shù) 值 描述
vbUseCompareOption –1 使用Option Compare語(yǔ)句的設(shè)置值來(lái)執(zhí)行比較。
vbBinaryCompare 0 執(zhí)行二進(jìn)制比較。
vbTextCompare 1 執(zhí)行文字比較。
vbDatabaseCompare 2 僅用于Microsoft Access。基于您的數(shù)據(jù)庫(kù)的信息執(zhí)行比較。
返回值
Replace的返回值如下:
如果 Replace返回值
expression長(zhǎng)度為零 零長(zhǎng)度字符串("")。
expression為Null 一個(gè)錯(cuò)誤。
find長(zhǎng)度為零 expression的復(fù)本。
replacewith長(zhǎng)度為零 expression的復(fù)本,其中刪除了所有出現(xiàn)的find 的字符串。
start > Len(expression) 長(zhǎng)度為零的字符串。
count is 0 expression.的復(fù)本。
說(shuō)明
Replace函數(shù)的返回值是一個(gè)字符串,但是,其中從start所指定的位置開(kāi)始,到expression字符串的結(jié)尾處的一段子字符串已經(jīng)發(fā)生過(guò)替換動(dòng)作。并不是原字符串從頭到尾的一個(gè)復(fù)制。
該文章在 2010/8/13 10:10:25 編輯過(guò)