【发布时间】:2020-07-13 19:51:51
【问题描述】:
我有一个包含字母和数字的字符串 sStr。我正在尝试从字符串中删除字母。
例如: sStr="P441" 或有时 sStr="BK471" 。
我尝试使用
Right(sStr,3) 和 split
这给了我 441。由于字符串 sStr 有时可能包含 2 个字母(“BK471”),我如何删除 vba 中的字母。
【问题讨论】:
我有一个包含字母和数字的字符串 sStr。我正在尝试从字符串中删除字母。
例如: sStr="P441" 或有时 sStr="BK471" 。
我尝试使用
Right(sStr,3) 和 split
这给了我 441。由于字符串 sStr 有时可能包含 2 个字母(“BK471”),我如何删除 vba 中的字母。
【问题讨论】:
您可以遍历字符串中的每个字符,检查它是否为IsNumeric
Dim x as integer
Dim sCleanedStr As String
For x = 1 to Len(sStr)
If IsNumeric(Mid(sStr, x, 1)) then sCleanedStr = sCleanedStr & Mid(sStr, x, 1)
Next
【讨论】:
您可以使用正则表达式删除任何字母。为此,您需要在宏中包含 Regex 库(转到工具 -> 参考,然后搜索并选择正则表达式库)
Sub test()
sStr = "abc123"
Dim regEx As New RegExp
With regEx
.Pattern = "[a-z]+"
.Global = True
.IgnoreCase = True
End With
sStr = regEx.Replace(sStr, "")
MsgBox (sStr)
End Sub
上面的代码将替换单词中任何地方的任何字母。
【讨论】: