如何删除字符串中的特殊字符和字母?

 qwert1234*90)!  ' this might be my cell value

我必须将其转换为
 123490  ' I mean I have to remove everything but keep only the numbers in string

但它应该留出空间!
 qwe123 4567*. 90  ' String with spaces
 123 4567 90     ' output should be

我找到了vba Replace-但是为每个字符写一个替换使我的代码很大。好吧,让我清楚地告诉您,不要向您隐瞒任何东西:
  • 输入:qwe123 4567*. 90'带有空格单元格(1,“A”)的字符串。值
  • 接下来的操作是我的想法:123 4567 90'首先删除字符,并保留空格
  • 最终输出为A1:A3

  • (对于每个空格,都应插入行并填充该行)

    您能告诉我如何删除字符串中除数字和空格以外的所有字符吗?

    提前致谢

    最佳答案

    您需要使用正则表达式。

    请参阅以下示例:

    Option Explicit
    
    Sub Test()
        Const strTest As String = "qwerty123 456 uiops"
        MsgBox RE6(strTest)
    End Sub
    
    Function RE6(strData As String) As String
        Dim RE As Object, REMatches As Object
    
        Set RE = CreateObject("vbscript.regexp")
        With RE
            .MultiLine = False
            .Global = True
            .IgnoreCase = True
            .Pattern = "([0-9]| )+"
        End With
    
        Set REMatches = RE.Execute(strData)
        RE6 = REMatches(0)
    
    End Function
    

    说明:Pattern = "([0-9]| )+"将匹配包含数字(+)或([0-9])空格(|)的任何0个或多个组()。

    有关正则表达式的更多信息:
  • a thread on ozgrid
  • a very good reference about regexp
  • 关于vba - 如何删除字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7384029/

    10-10 18:55
    查看更多