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字符串的結尾處的一段子字符串已經發生過替換動作。并不是原字符串從頭到尾的一個復制。
該文章在 2010/8/13 10:10:25 編輯過