[英]VBA Exclude special characters and numbers but keep spaces from string
我在Excel单元格中有文本“ abcd 24 ef-gh”。
我需要删除“ 24”和“-”,但保留所有字母和空格。
我有一个遍历文本并使用like运算符标识字母的函数。 出于某种原因,它不会排除在循环之前添加了replace语句的“ 24”或“-”:
Function StripNonAlpha(TextToReplace As String) As String
Dim i As Integer
Dim a, b, c As String
a = Replace(TextToReplace, "-", " ")
For i = 1 To Len(a)
b = Mid(a, i, 1)
If b Like "[A-Z,a-z, ]" Then
c = c & b
End If
Next i
StripNonAlpha = c
End Function
我本来希望使用正则表达式而不是此循环,但是当我发现许多其他语言的示例时,我并没有弄清楚该正则表达式可以与VBA一起使用。
任何正则表达式建议都是欢迎的,但是我也想知道为什么我的循环表现不如预期。
使用像这样的简单正则表达式来保留您想要的字符(即,删除任何不是az
, AZ
或空格的字符)
更新:编辑制作,以取代-
与" "
之前,正则表达式剥离
Function StripNonAlpha(TextToReplace As String) As String
Dim ObjRegex As Object
Set ObjRegex = CreateObject("vbscript.regexp")
With ObjRegex
.Global = True
.Pattern = "[^a-zA-Z\s]+"
StripNonAlpha = .Replace(Replace(TextToReplace, "-", Chr(32)), vbNullString)
End With
End Function
您将需要添加一个引用的正则表达式库看到这
试试这个模式
regEx.Pattern = "(\w\w\w\w)\s\d\d\s(\w\w)\D(\w\w)"
这将为您提供三个分组abcd ef gh,您可以随后使用它们。 希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.