关于VB6.0从一个字符串提取字符串的问题

u014191863 2014-03-18 12:35:33
onclick='Odds(942057)'
onclick='Odds(942058)'
onclick='Odds(942059)'
onclick='Odds(942060)'
onclick='Odds(942061)'



我的文本里面有很多个类似于这个样子的!我想把后面所有后面的数字全部提出来! 放到一个数组里面!应该怎么做呢? 谢谢各位了!

顺便说一下我是做一个网页解析的程序!所以会有很多“=”和 “onclick”的之类的!还会有很多其他无关的数据!所以尽可能可以严谨点!

...全文
484 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
notback 2014-03-21
  • 打赏
  • 举报
回复
首先数据是否只由onclick='Odds(942057)' onclick='Odds(942058)' onclick='Odds(942059)' onclick='Odds(942060)' onclick='Odds(942061)' 这种数据组成,如果是好办,不是,你考虑清理问题。 vb6架构下 先用字符串数组载入 onclick='Odds(942059)' 这种数据 然后循环对字符串用split 按照“=”拆分 取拆分后的字符串'Odds(942059)' 然后用replace将'Odds( 以及 )' 替换掉 最后剩下的就是你要的数字了。 vb6使用正则表达式貌似挺麻烦的。
of123 2014-03-21
  • 打赏
  • 举报
回复
既然用到拆分,就不如直接用 "(" 拆分:
Dim strData As String
Dim strLine() As String, strItem() As String
Dim lngData() As Long
Dim i As Long

    strData = "onclick='Odds(942057)' " & vbCrLf & _
              "onclick='Odds(942058)' " & vbCrLf & _
              "onclick='Odds(942059)' " & vbCrLf & _
              "onclick='Odds(942060)' " & vbCrLf & _
              "onclick='Odds(942061)' "

    strLine = Split(strData, vbCrLf)
    
    ReDim lngData(UBound(strLine))
    
    For i = 0 To UBound(strLine)
        strItem = Split(strLine(i), "(")
        If UBound(strItem) = 1 Then
            lngData(i) = Val(strItem(1))
            Debug.Print lngData(i)
        End If
    Next i
of123 2014-03-19
  • 打赏
  • 举报
回复
Dim strData As String
Dim strLine() As String
Dim lngData() As Long
Dim i As Long

    strData = "onclick='Odds(942057)' " & vbCrLf & _
              "onclick='Odds(942058)' " & vbCrLf & _
              "onclick='Odds(942059)' " & vbCrLf & _
              "onclick='Odds(942060)' " & vbCrLf & _
              "onclick='Odds(942061)' "

    strLine = Split(strData, vbCrLf)
    
    ReDim lngData(UBound(strLine))
    
    For i = 0 To UBound(strLine)
        lngData(i) = Val(Mid(strLine(i), 15))
        Debug.Print lngData(i)
    Next i
运行结果
 942057 
 942058 
 942059 
 942060 
 942061 
threenewbee 2014-03-18
  • 打赏
  • 举报
回复
正则表达式。
threenewbee 2014-03-18
  • 打赏
  • 举报
回复
(?<=Odds\()\d+(?=\))
赵4老师 2014-03-18
  • 打赏
  • 举报
回复
'此代码由“正则测试工具  v1.1.35”自动生成,请直接调用TestReg过程
Private Sub TestReg()
    Dim strData As String
    Dim reg As Object
    Dim matchs As Object, match As Object

    strData = "onclick='Odds(942057)' "  &  vbCrLf  & _
              "onclick='Odds(942058)' "  &  vbCrLf  & _
              "onclick='Odds(942059)' "  &  vbCrLf  & _
              "onclick='Odds(942060)' "  &  vbCrLf  & _
              "onclick='Odds(942061)' "

    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.IgnoreCase = True
    reg.MultiLine = True
    reg.Pattern = "onclick='Odds\((\d*)\)'"
    Set matchs = reg.Execute(strData)
    For Each match In matchs
        'Debug.Print match.Value
        Debug.Print match.SubMatches(0)
    Next
End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧