如何在数组中查找特定字符串的随机值

时间:2015-07-15 11:35:52

标签: arrays vbscript

我有一个包含100多个条目的以下格式的文本文件

Header Responses 
--- AMD 6001 ---
Sent Packet
FRO 101
A_TEST 5001
Status 0

--- AMD 6002 ---
Sent Packet
FRO 101
A_TEST 5002
Status 1

我的要求是验证'Status'的值是否为0,如果是,继续进行从每个条目中获取随机'A_TEST'值。能否帮助我找到一个有效的方法在每个条目中找到'A_Test'值,因为执行时间因大量条目而更为重要。

我在以下结构中编写了代码

set txtfile = fso.OpenTextFile("")
set content= txtfile.ReadAll
arrEntry = split (content,"--- AMD")
For num=1 to ubound(arrEntry)
    '2nd entry fails due to its entry status    
    If Instr(arrEntry(num),"Status 0") > 0 Then
        ' How to proceed further to get the value of 'A_TEST' from this array ???? 
    Else
        'Fail - Dont Proceed Further
    End If
Next

1 个答案:

答案 0 :(得分:1)

您的代码失败,因为

set content= txtfile.ReadAll

错误地使用Set将非对象(String)分配给变量。像

这样的东西
  Dim sAll : sAll = goFS.OpenTextFile("..\data\31429305.txt").ReadAll()
  Dim s
  For Each s In Split(sAll, "--- AMD")
      If InStr(s, "Status 0") Then
         WScript.Echo Split(s, vbCrLf)(3)
      End If
  Next
如果幸运的话,

将“正常工作”(EOL标记为vbCrLf,A_TEST始终位于第4行)。

我使用RegExp,如:

  Dim sAll : sAll     = goFS.OpenTextFile("..\data\31429305.txt").ReadAll()
  Dim rCut : Set rCut = New RegExp
  rCut.Global    = True
  rCut.Multiline = True
  rCut.Pattern   = "^A_TEST (\d+)\r$\n^Status 0\r$"
  Dim m
  For Each m In rCut.Execute(sAll)
      WScript.Echo m.Submatches(0)
  Next