从string中删除字符

我有以下function,但我希望它做相反的例如返回不好的字符不是我指定的

这个函数让你指定两个string。 你想要parsing的string和你想从第一个string指定的string – 返回编辑的string

Function GETALPHANUMERIC(text, str_all) For lenstr = 1 To Len(text) If InStr(str_all, LCase(Mid(text, lenstr, 1))) Then GETALPHANUMERIC = GETALPHANUMERIC & Mid(text, lenstr, 1) End If Next End Function 

感谢Rob

只要加上= 0

 If InStr(str_all, LCase(Mid(text, lenstr, 1))) = 0 Then 

InStr函数在找不到匹配时返回0。

你可以像下面的例子那样使用分割function。

 Sub test() Dim s As String Dim result As String s = "abcXdefXghiX" result = excludeCharacter(s, "X") MsgBox s & " excluding X is " & result End Sub Function excludeCharacter(originalString As String, exclude As String) As String Dim sArray() As String Dim result As String Dim i As Long sArray = Split(originalString, exclude) For i = 0 To UBound(sArray, 1) result = result & sArray(i) Next i excludeCharacter = result End Function 

也只是写了这个 – 以为我会分享一下

 Function BadChar(text, str_all) For lenstr = 1 To Len(text) If InStr(str_all, LCase(Mid(text, lenstr, 1))) = 0 Then BadChar = BadChar & Mid(text, lenstr, 1) End If Next End Function 

换句话说,你想从源string中删除(删除)字符? 如果是的话,这里有一个答案:

 Function StripChars(source As String, chars As String) Dim pos As Long For i = 1 To Len(chars) Do pos = InStr(1, source, Mid(chars, i, 1), VbCompareMethod.vbTextCompare) If pos > 0 Then source = Mid(source, 1, pos - 1) & Mid(source, pos + 1) Else Exit Do End If Loop Next i StripChars = source End Function