怎么将一个字符串中的数字提取出来?

时间:2023-01-04 08:03:32
我想将一个字符串中的所有数字提取出来,要怎么做的?
其中字符串的长度是不固定的!
分不够可以再加!

10 个解决方案

#1


用SubString读出每个字符,或者用Pos直接提取

#2


'strTemp 是你的字符串
for i=1 to len(strTemp)
   if mid(strTemp,i,1)>="0" and mid(strTemp,i,1)<="9" then
        mid(strTemp,i,1)是数字
   end if
next i


#3


有其他的方法吗?

#4


其实上面那位的想法很正确啊,把字符串分割开来,判断ASIIC符就可以知道是不是数字了

#5


Private Sub Command1_Click()
MsgBox GetNumFromString("asda32423sdsa908098sdfsd")
End Sub

Public Function GetNumFromString(X As String) As String
Dim i As Long
For i = 0 To VBA.Len(X) - 1
    If VBA.Asc(VBA.Mid(X, i + 1, 1)) >= VBA.Asc("0") And VBA.Asc(VBA.Mid(X, i + 1, 1)) <= VBA.Asc("9") Then
       GetNumFromString = GetNumFromString & VBA.Mid(X, i + 1, 1)
    End If
Next i
End Function

#6


哇,我才去找了一下源码就已经有人写好了,快啊

#7


For i = 0 To VBA.Len(X) - 1   ???
为什么不是 For i = 1 To VBA.Len(X) ???
你的 VB 在用 Mid("abc",0,1) 时不出错吗???
奇怪!!!

#8


VBA.Mid(X, i + 1, 1) '我取得是 i+1 的位置!

#9


再来

#10


.

#1


用SubString读出每个字符,或者用Pos直接提取

#2


'strTemp 是你的字符串
for i=1 to len(strTemp)
   if mid(strTemp,i,1)>="0" and mid(strTemp,i,1)<="9" then
        mid(strTemp,i,1)是数字
   end if
next i


#3


有其他的方法吗?

#4


其实上面那位的想法很正确啊,把字符串分割开来,判断ASIIC符就可以知道是不是数字了

#5


Private Sub Command1_Click()
MsgBox GetNumFromString("asda32423sdsa908098sdfsd")
End Sub

Public Function GetNumFromString(X As String) As String
Dim i As Long
For i = 0 To VBA.Len(X) - 1
    If VBA.Asc(VBA.Mid(X, i + 1, 1)) >= VBA.Asc("0") And VBA.Asc(VBA.Mid(X, i + 1, 1)) <= VBA.Asc("9") Then
       GetNumFromString = GetNumFromString & VBA.Mid(X, i + 1, 1)
    End If
Next i
End Function

#6


哇,我才去找了一下源码就已经有人写好了,快啊

#7


For i = 0 To VBA.Len(X) - 1   ???
为什么不是 For i = 1 To VBA.Len(X) ???
你的 VB 在用 Mid("abc",0,1) 时不出错吗???
奇怪!!!

#8


VBA.Mid(X, i + 1, 1) '我取得是 i+1 的位置!

#9


再来

#10


.