VB 程序设计

10个成员

把符串中的一子串替换为另一子串

发表于 2016-12-19 3109 次查看
方法一:
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

 

发表回复
你还没有登录,请先登录注册