设计可以在主串s中第i个位置之前插入一个子串t的程序。 设计可以在主串s中从第i个位置开始共取m个字符,
温柔似野鬼°
527次浏览
2020年07月31日 16:02
最佳经验
本文由作者推荐
电话会议英文-盖然性
方法一:
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
}