删除excel vba中的特殊字符
我正在使用这个function来删除所有的特殊字符,但仍然很less像“Ø”或“é”的特殊字符,所有类似的字符仍然存在如何处理下面给出的function。
我的想法是创build一个像MyStr这样的特殊字符的string,并删除它们。
请build议。
Function ReplaceSplChars(TempStr As String) As String Dim counter As Long, Position As Long Dim MyStr As String, SplStr As String MyStr = " 1234567890abcdefghijklmnopqrstuvwxyz.@" Position = 1 For counter = 1 To Len(TempStr) SplStr = Mid(LCase(TempStr), Position, 1) If Not InStr(MyStr, SplStr) > 0 Then If SplStr = "-" Or SplStr = "_" Or SplStr = "'" Or SplStr = "/" Or SplStr = "," Then TempStr = Replace(TempStr, SplStr, " ", , 1) SplCharCount = SplCharCount + 1 Position = Position + 1 Else TempStr = Replace(TempStr, SplStr, "", , 1) SplCharCount = SplCharCount + 1 End If Else Position = Position + 1 End If Next counter ReplaceSplChars = TempStr End Function
一个rexp需要努力工作。
testing代码
Sub EddieBetts() MsgBox ReplaceSplChars(" 12345Ø67890abcdefghijklmnopqrstéuvwxyz.@") End Sub
下面的模式排除任何不是
- 字母数字( \ w )
- 空间( \ s )
- @
码
Function ReplaceSplChars(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "[^\w\s@]+" .Global = True ReplaceSplChars = Application.Trim(.Replace(strIn, vbNullString)) End With End Function