Debug.Print Replace("afnwoerwenoDFNOwneoNOESRNwOenrwonF nwoeONESRnwo wWon", "wo", "#wo#", , , vbTextCompare)

解决方案 »

  1.   


    这句我当然知道,可能你还没有明白我的意思,通过你上面给我的这段,出来的结果无论是“wo”,“Wo”,“wO”,“WO”都会变成“#wo#”而已,根本就没有变会原来的大小写,我是希望把“wo”就变成“#wo#”,“Wo”就变成“#Wo#”,“wO”就变成“#wO#”,“WO”就变成“#WO#”,这样可以吗?
      

  2.   


    这句我当然知道,可能你还没有明白我的意思,通过你上面给我的这段,出来的结果无论是“wo”,“Wo”,“wO”,“WO”都会变成“#wo#”而已,根本就没有变会原来的大小写,我是希望把“wo”就变成“#wo#”,“Wo”就变成“#Wo#”,“wO”就变成“#wO#”,“WO”就变成“#WO#”,这样可以吗?啊,这样啊,多用几次replace吧,并把vbTextCompare改成vbBinaryCompare
      

  3.   


    这句我当然知道,可能你还没有明白我的意思,通过你上面给我的这段,出来的结果无论是“wo”,“Wo”,“wO”,“WO”都会变成“#wo#”而已,根本就没有变会原来的大小写,我是希望把“wo”就变成“#wo#”,“Wo”就变成“#Wo#”,“wO”就变成“#wO#”,“WO”就变成“#WO#”,这样可以吗?啊,这样啊,多用几次replace吧,并把vbTextCompare改成vbBinaryCompare多次用?这不现实啊,如果我要替换的不是“wo”,而是由10个以上的字母组成,每个字母都有可能会大小写,那启不是???
      

  4.   

    replace应该满足不了你的要求。既然这样,自己写一个呗
      

  5.   

    Private Sub Command1_Click()
        MsgBox CharNum("afnwoerwenoDFNOwneoNOESRNwOenrwonF nwoeONESRnwo wWon", "WO")
    End SubFunction CharNum(ByVal strInput As String, ByVal strChar As String) As String
        Dim i As Integer
        Dim X As Integer
        Dim Y As Integer
        Dim AA As String
        Dim BB As String
        Dim CC() As String
        Dim ZFC As String
        AA = LCase(strInput)
        BB = LCase(strChar)
        CC = Split(AA, BB)
        If UBound(CC) = 0 Then Exit Function
        X = 1: Y = 0: ZFC = strInput
        For i = 1 To UBound(CC)
            ZFC = Mid(ZFC, 1, InStr(X, AA, BB) - 1 + Y) & "#" & Mid(ZFC, InStr(X, AA, BB) + Y, Len(BB)) & "#" & Mid(ZFC, InStr(X, AA, BB) + Len(BB) + Y)
            X = InStr(X, AA, BB) + Len(BB)
            Y = Y + 2
        Next
        CharNum = ZFC
    End Function
      

  6.   

    Private Sub Command1_Click()
        MsgBox CharNum("afnwoerwenoDFNOwneoNOESRNwOenrwonF nwoeONESRnwo wWon", "WO")
    End SubFunction CharNum(ByVal strInput As String, ByVal strChar As String) As String
        Dim i As Integer
        Dim X As Integer
        Dim Y As Integer
        Dim AA As String
        Dim BB As String
        Dim CC() As String
        Dim ZFC As String
        AA = LCase(strInput)
        BB = LCase(strChar)
        CC = Split(AA, BB)
        If UBound(CC) = 0 Then CharNum = strInput :Exit Function
        X = 1: Y = 0: ZFC = strInput
        For i = 1 To UBound(CC)
            ZFC = Mid(ZFC, 1, InStr(X, AA, BB) - 1 + Y) & "#" & Mid(ZFC, InStr(X, AA, BB) + Y, Len(BB)) & "#" & Mid(ZFC, InStr(X, AA, BB) + Len(BB) + Y)
            X = InStr(X, AA, BB) + Len(BB)
            Y = Y + 2
        Next
        CharNum = ZFC
    End Function
      

  7.   

    参考下面的笨法:也许还有更简便的方法
    Sub test()
        Dim w1 As String, w2 As String, fStr As String, i As Integer
        w1 = "afnwoerwenoDFNOwneoNOESRNwOenrwonF nwoeONESRnwo wWon"
        fStr = "wo"
        Do
            If Len(w1) = 0 Then Exit Do
            i = InStr(1, w1, fStr, vbTextCompare)
            If i = 0 Then Exit Do
            w2 = w2 & Left$(w1, i - 1) & "#" & Mid$(w1, i, Len(fStr)) & "#"
            w1 = Right$(w1, Len(w1) - (i + Len(fStr) - 1))
        Loop
        Debug.Print w2
    End Sub
      

  8.   

    Private Sub Command1_Click()
         MsgBox CharNum("afnwoerwenoDFNOwneoNOESRNwOenrwonF nwoeONESRnwo wWon", "WO")
     End Sub Function CharNum(ByVal AA As String, ByVal BB As String) As String
         Dim i As Integer
         Dim X As Integer
         Dim Y As Integer
         Dim CC() As String
         Dim ZFC As String
         CC = Split(LCase(AA), LCase(BB))
         If UBound(CC) = 0 Then CharNum = AA: Exit Function
         X = 1: Y = 0: ZFC = AA
         For i = 1 To UBound(CC)
             ZFC = Mid(ZFC, 1, InStr(X, AA, BB, vbTextCompare) - 1 + Y) & "#" & Mid(ZFC, InStr(X, AA, BB, vbTextCompare) + Y, Len(BB)) & "#" & Mid(ZFC, InStr(X, AA, BB, vbTextCompare) + Len(BB) + Y)
             X = InStr(X, AA, BB, vbTextCompare) + Len(BB)
             Y = Y + 2
         Next
         CharNum = ZFC
     End Function