2017-04-03 129 views
2

我正在使用此功能删除所有假定的特殊字符,但仍然很少有特殊字符,例如“Ø”或“é”,并且所有类似字符仍然存在如何在下面给出的函数中处理此问题。删除Excel中的特殊字符

我的想法是,创建一个像MyStr这样的特殊字符的字符串并将其删除。

请建议。

Function ReplaceSplChars(TempStr As String) As String 

Dim counter As Long, Position As Long 
Dim MyStr As String, SplStr As String 


MyStr = " [email protected]" 
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 

回答

2

A 需要努力工作。

测试下面的代码

Sub EddieBetts() 
MsgBox ReplaceSplChars(" 12345Ø67890abcdefghijklmnopqrsté[email protected]") 
End Sub 

模式排除任何是

  • 字母数字(\ W
  • 空间(\ S
  • @

代码

Function ReplaceSplChars(strIn As String) As String 
Dim objRegex As Object 
    Set objRegex = CreateObject("vbscript.regexp") 
    With objRegex 
     .Pattern = "[^\w\[email protected]]+" 
     .Global = True 
    ReplaceSplChars = Application.Trim(.Replace(strIn, vbNullString)) 
    End With 
End Function 
+0

尼斯使用正则表达式。但请注意,字符类括号是多余的。 –

+0

是的。开始一场负面比赛并没有完全放松。 – brettdj

+0

你好,谢谢你的回复。 –