我正在使用此函数删除所有假定的特殊字符,但仍然有一些特殊字符,如“Ø”或“é”,并且所有类似的字符仍然存在,如何在下面给定的函数中处理这个问题。
我的想法是创建一个由像 MyStr 这样的特殊字符组成的字符串并删除它们。
请提出建议。
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消除了艰苦的工作。
测试代码
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
关于excel - 删除excel中的特殊字符vba,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178891/