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

资讯 驱动中国 若水 1,132 次阅读 0 条评论
分享 Q

方法一:

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

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友