将代码更改为删除而不是允许字符
Alter code to Remove instead of Allow characters
函数allows
列出的字符(在本例中)
Case 48 To 57, 65 To 90, 97 To 122:
是否可以将其更改为 Remove
列出的字符?
谢谢
Function AlphaNumericOnly(strSource As String) As String
Dim i As Integer
Dim strResult As String
For i = 1 To Len(strSource)
Select Case Asc(Mid(strSource, i, 1))
Case 48 To 57, 65 To 90, 97 To 122:
strResult = strResult & Mid(strSource, i, 1)
End Select
Next
AlphaNumericOnly = strResult
End Function
如果您打算使用 For ... Next
- 只需添加 Case Else
:
For i = 1 To Len(strSource)
Select Case Asc(Mid(strSource, i, 1))
Case 48 To 57, 65 To 90, 97 To 122:
Case Else:
strResult = strResult & Mid(strSource, i, 1)
End Select
Next
正如@pnuts 和@brettdj 指出的那样 answered - RegEx 更有效,在您的情况下,函数可能如下所示:
Function NonAlphaNumericOnly(strSource As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[\w]+"
NonAlphaNumericOnly = .Replace(strSource, "")
End With
End Function
函数allows
列出的字符(在本例中)
Case 48 To 57, 65 To 90, 97 To 122:
是否可以将其更改为 Remove
列出的字符?
谢谢
Function AlphaNumericOnly(strSource As String) As String
Dim i As Integer
Dim strResult As String
For i = 1 To Len(strSource)
Select Case Asc(Mid(strSource, i, 1))
Case 48 To 57, 65 To 90, 97 To 122:
strResult = strResult & Mid(strSource, i, 1)
End Select
Next
AlphaNumericOnly = strResult
End Function
如果您打算使用 For ... Next
- 只需添加 Case Else
:
For i = 1 To Len(strSource)
Select Case Asc(Mid(strSource, i, 1))
Case 48 To 57, 65 To 90, 97 To 122:
Case Else:
strResult = strResult & Mid(strSource, i, 1)
End Select
Next
正如@pnuts 和@brettdj 指出的那样 answered - RegEx 更有效,在您的情况下,函数可能如下所示:
Function NonAlphaNumericOnly(strSource As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[\w]+"
NonAlphaNumericOnly = .Replace(strSource, "")
End With
End Function