注册 登录
编程论坛 VB6论坛

请问怎样截取字符串中的数字?谢谢

cattac 发布于 2013-04-05 19:36, 5842 次点击
一个Text中输入数字和字符的混合内容,比如“123+654”,请问怎样截取“+”前的数字内容?谢谢

“+”前的数字长度不是固定的,是会变化
8 回复
#2
勿谖2013-04-05 20:46
Private Sub Command1_Click()
Dim i As Integer, n As Integer, s As String, m As String, c As Integer
   s = Text1.Text
   n = Len(s)
   For i = 1 To n
      m = Mid(s, i, 1)
      If Asc(m) <= 57 And Asc(m) >= 49 Then
            c = c & Val(m)
            
      Else
            Print c
            Exit For
      End If
    Next i
    If i = n + 1 Then
        Print c
    End If
End Sub
我把结果直接打印在form1 上了
#3
cattac2013-04-05 20:50
回复 2楼 勿谖
嗯嗯,可以详细解释一下程序每句的功能吗,谢谢 麻烦咯
#4
勿谖2013-04-05 21:23
Private Sub Command1_Click()
Dim i As Integer, n As Integer, s As String, m As String, c As Integer
   s = Text1.Text  ’ s 以字符型记录text1中的内容
   n = Len(s)       ’len()函数求字符串的长度,n 记录 text1 内容的长度
   For i = 1 To n   
      m = Mid(s, i, 1)  ’ mid()函数取字符串中的字符,mid(s,i,1)表示在s中从第i个字符开始取1个字符
      If Asc(m) <= 57 And Asc(m) >= 49 Then ’用asc()函数判断取出的字符是否为数字。0到9的asc()取值范围在49到57之间
            c = c & Val(m)                  ’如果是数字,则用c 来记录,并依次连接起来
            
      Else                                  ’ 如果不是数字,则打印c,并退出循环
            Print c
            Exit For
      End If
    Next i
    If i = n + 1 Then         ’如果最后显示都是数字,则打印c
        Print c
    End If
End Sub
#5
cattac2013-04-05 21:44
回复 4楼 勿谖
我已经验证过了,效果很好,但是。。。如果输入10,或101中间有“0”的它只会输出1,可以再改动一下吗,谢谢
#6
勿谖2013-04-06 13:16
抱歉,只要把上面的49改为48 就行了。就是 If Asc(m) <= 57 And Asc(m) >= 48 Then
其他的不用变。因为asc(0)=48
#7
cattac2013-04-06 16:53
回复 6楼 勿谖
嗯,谢谢了
#8
daytostorm2013-04-09 17:03
学习之
#9
nmcfbgttyl2018-11-08 09:42
建议把变量i,n,c定义为Long类型.
1