Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用标记变量在VBScript中进行字符串分析_Vbscript - Fatal编程技术网

使用标记变量在VBScript中进行字符串分析

使用标记变量在VBScript中进行字符串分析,vbscript,Vbscript,我有一大块受制表符限制的数据要过滤掉,我可以使用VBSCRIPT来完成 在我当前的文件中,我有以下数据 abcd9 efgh9 12349 0x11111 11111 22222 33333 44444 0x11112 55555 66666 77777 88888 0x11113 。 . 我的结果应该是 { 11111, 22222 } { 33333, 44444 } { 55555, 66666 } { 77777, 88888 } 这是一项相当困难的任务,任何解决方案都将不胜感激

我有一大块受制表符限制的数据要过滤掉,我可以使用VBSCRIPT来完成

在我当前的文件中,我有以下数据

abcd9
efgh9
12349
0x11111
11111
22222
33333
44444
0x11112
55555
66666
77777
88888
0x11113
。 .

我的结果应该是

{
11111,
22222
}
{
33333,
44444
}
{
55555,
66666
}
{
77777,
88888
}
这是一项相当困难的任务,任何解决方案都将不胜感激

其中0x11111、0x11112、0x11113是标记变量


提前感谢。

如果示例数据具有代表性,请使用分组正则表达式:

  Dim sAll   : sAll       = goFS.OpenTextFile("..\data\17050037.txt").ReadAll
  Dim rePair : Set rePair = New RegExp
  rePair.Global    = True
  rePair.Multiline = True
  rePair.Pattern   = "^(\d+)\r\n^(\d+)\r\n"
  Dim oMTS   : Set oMTS   = rePair.Execute(sAll)
  Dim oMt
  For Each oMT IN oMTS
    WScript.Echo "{"
    WScript.Echo oMT.SubMatches(0) & ","
    WScript.Echo oMT.SubMatches(1)
    WScript.Echo "}"
  Next
输出:

{
11111,
22222
}
{
33333,
44444
}
{
55555,
66666
}
{
77777,
88888
}
添加:

如果您喜欢直线循环,请尝试:

Dim file  : Set file = goFS.OpenTextFile("..\data\17050037.txt")
Dim state : state = 0
Do Until file.AtEndOfStream
  Dim Line : Line = file.ReadLine
  Select Case state
    Case 1, 3
      WScript.Echo "{"
      WScript.Echo Line & ","
      state = state + 1
    Case 2, 4
      WScript.Echo Line
      WScript.Echo "}"
      state = state + 1
    Case Else
      If "0x" = Left(Line, 2) Then state = 1
  End Select
Loop
file.Close

在两个标记之间是否总是正好有4行?数据线是否总是5位数?