如何删除或替换一个字符串中固定字符之间的字符,固定字符之间的字符个数不定,字符串如下:clic=*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjddddd.....该字符串比较大,要求删除*88*,*4444*,*ffff*,*33333333433* 或将*88*,*4444*替换成AA,BB等指定字符串,请高手帮助,谢谢!!!
调试欢乐多
或合部替换成BBB,不是单一对应替换.
Dim str As String, iBegin As Integer, iEnd As Integer, strTemp1 As String, strTemp2 As String
str = "*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjdddddq"
Do While (True)
iBegin = InStr(1, str, "*")
If iBegin <= 0 Then Exit Do
iEnd = InStr(iBegin + 1, str, "*")
If iEnd <= 0 Then Exit Do
strTemp1 = Mid(str, 1, iBegin - 1)
strTemp2 = Mid(str, iEnd + 1, Len(str) - iEnd)
str = strTemp1 & "AA" & strTemp2
DoEvents
Loop
MsgBox str
End Sub
Dim nArray, partStr
Dim Clic As String, newClic As String
Dim partChar As String, partSize As Long
Clic = "*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjddddd"
newClic = "*"
nArray = Split(Clic, "*")
For Each partStr In nArray
If partStr <> "" Then
partSize = Len(partStr)
Select Case partStr
Case String(partSize, "8"): partChar = String(partSize, "A") & "*"
Case String(partSize, "4"): partChar = String(partSize, "B") & "*"
Case Else: partChar = partStr & "*"
End Select
newClic = newClic & partChar
End If
Next
newClic = Left$(newClic, Len(newClic) - 1)
MsgBox Clic & Chr(13) & newClic
Dim strSource As String
strSource = "clic=*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjddddd"
Debug.Print funStringExchange(strSource, "*", "AA")
End Sub
'//先分割,再组合
Private Function funStringExchange(strSource As String, strDelimiter As String, strInstead As String) As String
Dim astrPick() As String
Dim strResult As String
Dim i As Integer
astrPick = Split(strSource, strDelimiter)
For i = 0 To (UBound(astrPick) - 1) Step 2'//替换掉间隔符中间的字符
strResult = strResult & astrPick(i) & strInstead
Next
funStringExchange = strResult & astrPick(i)'//补上最后一个并返回结果
End Function
'参数:strSource源字符串;varString()要替换*号间内容的字符数组
Dim n As Long, m As Long
Dim s
For Each s In varString
n = InStr(1, strSource, "*")
m = InStr(n + 1, strSource, "*")
m = m - n + 1
If m > 1 Then
Mid(strSource, n, m) = s
End If
Next
End Sub
Private Sub Command1_Click() Dim s As String
s = "*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjdddddq"
Debug.Print s
StringReplace s, "AAAA", "BBBBBB", "CCCCCC", "DDDDDDDDDDDDD"
Debug.Print sEnd Sub