Office中国论坛/Access中国论坛

标题: 求一关于不特定字符、字符串中之间取数字的问题。 [打印本页]

作者: fnsmydyang    时间: 2014-8-30 19:22
标题: 求一关于不特定字符、字符串中之间取数字的问题。
本帖最后由 fnsmydyang 于 2014-8-30 19:25 编辑

求助各位大侠:       一个关于取数值的问题
字符串:ab123456cbss231     取值结果:123456     字符串,字符不特定

              sab132156dfjdskljfldks4587      取值结果:132156     字符串,字符不特定


             谢谢各位指教。





作者: fnsmydyang    时间: 2014-8-30 19:50
自己写了一段代码,能解决,请指教
Public Function 订单ID(StrB As Variant) As Variant
Dim j As Integer
Dim I As Integer
Dim N As Integer
Dim StrTemp
Dim StrID
   
    If Len(StrB) > 0 Then
       N = Len(StrB)
       For I = 1 To N
           If IsNumeric(Mid(StrB, I, 1)) Then
              j = I
              Exit For
           End If
       Next
       For I = j To N
           If IsNumeric(Mid(StrB, I, 1)) Then
              StrTemp = StrTemp & Mid(StrB, I, 1)
           Else
              Exit For
           End If
       Next
       订单ID = StrTemp
    End If
   
End Function

作者: zpy2    时间: 2014-8-31 05:15
fnsmydyang 发表于 2014-8-30 19:50
自己写了一段代码,能解决,请指教
Public Function 订单ID(StrB As Variant) As Variant
Dim j As Integ ...

不错,!!!
作者: zpy2    时间: 2014-8-31 05:19
第2个循环是否可以用val(mid(str,j))取得?看看行吗?
作者: zpy2    时间: 2014-8-31 05:21
第1句As Integer比较好,因为返回的是数字。
作者: zpy2    时间: 2014-8-31 05:22
strB As string,可能会快点?
作者: zpy2    时间: 2014-8-31 05:30
用正则也可以,好象\d+
作者: todaynew    时间: 2014-8-31 16:58
本帖最后由 todaynew 于 2014-8-31 17:08 编辑
fnsmydyang 发表于 2014-8-30 19:50
自己写了一段代码,能解决,请指教
Public Function 订单ID(StrB As Variant) As Variant
Dim j As Integ ...

此类问题宜用正则表达式处理之
http://www.accessoft.com/article-show.asp?id=9320

这个正则表达式:^\D+(\d+)中提取$1即可。也就是开始是若干非数字字符,然后是若干数字字符,将这个数字字符提取到正则变量中。小括号定义变量,从左到右分别是变量$1、$2....

作者: fnsmydyang    时间: 2014-9-6 13:33
几天没上网,有这么多的大侠们指点,先谢谢各位楼主们了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3