VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 把符串中的一子串替换为另一子串
发表评论(0)作者:, 平台:, 阅读:10483, 日期:2000-03-29
方法一:

Public Function FastReplace(SSrch$, SFind$, SRepl$) As String


Dim Src() As Byte, Dst() As Byte, R() As Byte, F() As Byte

Dim LenF&, LenR&, LenDst&, i&, j&, OutPos&


Const ChunkSize& = 4096


If SSrch = "" Or SFind = "" Then Exit Function


Src = SSrch: F = SFind: R = SRepl

LenF = UBound(F): LenR = UBound(R)

LenDst = ChunkSize: ReDim Dst(0 To LenDst - 1)



For i = 0 To UBound(Src) Step 2


For j = 0 To LenF Step 2

If Src(i + j) <> F(j) Then Exit For

Next j


If j > LenF Then 'Found


For j = 0 To LenR Step 2

If OutPos >= LenDst Then

LenDst = LenDst + ChunkSize

ReDim Preserve Dst(0 To LenDst)

End If

Dst(OutPos) = R(j): OutPos = OutPos + 2

Next j


i = i + LenF - 1


Else


If OutPos >= LenDst Then

LenDst = LenDst + ChunkSize

ReDim Preserve Dst(0 To LenDst)

End If


Dst(OutPos) = Src(i): OutPos = OutPos + 2


End If

Next i



ReDim Preserve Dst(0 To OutPos - 2): SSrch = Dst



FastReplace = SSrch$



End Function


方法二:

' SearchLine is input, SearchFor is what to search for, ReplaceWith is the replacement


Function sReplace(SearchLine As String, SearchFor As String, ReplaceWith As String)

Dim vSearchLine As String, found As Integer



found = InStr(SearchLine, SearchFor): vSearchLine = SearchLine

If found <> 0 Then

vSearchLine = ""

If found > 1 Then vSearchLine = Left(SearchLine, found - 1)

vSearchLine = vSearchLine + ReplaceWith

If found + Len(SearchFor) - 1 < Len(SearchLine) Then _

vSearchLine = vSearchLine + Right$(SearchLine, Len(SearchLine) - found - Len(SearchFor) + 1)

End If

sReplace = vSearchLine



End Function