您现在的位置:软界网技术中心软件开发VB/VB.NET > 技术显示
把符串中的一子串替换为另一子串
2005-5-1 0:00:00   网友评论       阅读次数 点此评论
   方法一:
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  
      来源: 作者:
 
【评论查看】