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