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

  • 来源: 互联网 作者: 若水   2008-03-17/16:38
  • 方法一:

    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


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多