如何删除或替换一个字符串中固定字符之间的字符,固定字符之间的字符个数不定,字符串如下:clic=*88*1171>cre_46t*4444*h=468fskfjsdkfjsdkfjsdkf*ffff*fsdkfjsdkfjsdkfjsdkfj*33333333433*jjjjddddd.....该字符串比较大,要求删除*88*,*4444*,*ffff*,*33333333433* 或将*88*,*4444*替换成AA,BB等指定字符串,请高手帮助,谢谢!!!

解决方案 »

  1.   

    或将*88*,*4444*替换成AA,BB等指定字符串,请高手帮助,谢谢!!! 指的是将*88*,*4444*等等,全部替换成AA,
                          或合部替换成BBB,不是单一对应替换.
      

  2.   

    Option ExplicitPrivate Sub Command1_Click()
        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
      

  3.   

    你看这个方法行不:
      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
      

  4.   

    用下面的试试Private Sub Command1_Click()
        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
      

  5.   

    中午开饭前,捡空给你个思路:Option ExplicitSub StringReplace(strSource As String, ParamArray varString())
        '参数: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