pax*_*blo 43
假设你的意思是你想要删除非数字,你应该可以使用类似的东西:
Function onlyDigits(s As String) As String
' Variables needed (remember to use "option explicit"). '
Dim retval As String ' This is the return string. '
Dim i As Integer ' Counter for character position. '
' Initialise return string to empty '
retval = ""
' For every character in input string, copy digits to '
' return string. '
For i = 1 To Len(s)
If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
retval = retval + Mid(s, i, 1)
End If
Next
' Then return the return string. '
onlyDigits = retval
End Function
Run Code Online (Sandbox Code Playgroud)
这称呼:
Dim myStr as String
myStr = onlyDigits ("3d1fgd4g1dg5d9gdg")
MsgBox (myStr)
Run Code Online (Sandbox Code Playgroud)
会给你一个对话框,其中包含:
314159
Run Code Online (Sandbox Code Playgroud)
前两行显示如何将其存储到任意字符串变量中,以便按照您的意愿进行操作.
bre*_*tdj 19
构造正则表达式来解析.虽然语法可能需要一段时间才能掌握这种方法非常有效,并且非常灵活,可以处理更复杂的字符串提取/替换
Sub Tester()
MsgBox CleanString("3d1fgd4g1dg5d9gdg")
End Sub
Function CleanString(strIn As String) As String
Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "[^\d]+"
CleanString = .Replace(strIn, vbNullString)
End With
End Function
Run Code Online (Sandbox Code Playgroud)
扩展brettdj的答案,以便将不相交的嵌入数字解析为单独的数字:
Sub TestNumList()
Dim NumList As Variant 'Array
NumList = GetNums("34d1fgd43g1 dg5d999gdg2076")
Dim i As Integer
For i = LBound(NumList) To UBound(NumList)
MsgBox i + 1 & ": " & NumList(i)
Next i
End Sub
Function GetNums(ByVal strIn As String) As Variant 'Array of numeric strings
Dim RegExpObj As Object
Dim NumStr As String
Set RegExpObj = CreateObject("vbscript.regexp")
With RegExpObj
.Global = True
.Pattern = "[^\d]+"
NumStr = .Replace(strIn, " ")
End With
GetNums = Split(Trim(NumStr), " ")
End Function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127720 次 |
最近记录: |