我在excel单元格中有"abcd 24 ef-gh"文本.
我需要摆脱"24"和" - "但保留所有字母和空格.
我有一个循环文本的函数,并使用like运算符识别字母.出于某种原因,它不排除我在循环之前添加了替换语句的"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的正则表达式.
任何正则表达式的建议都是受欢迎的,但我也想知道为什么我的循环没有按预期运行.
使用一个简单的正则表达式像这样,让您所需的字符(即删除任何不是a-z
,A-Z
或空格)
更新:编辑-
以" "
在正则表达式剥离之前替换
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