2013-06-11 88 views
0

我有一大堆製表符限制數據需要過濾掉,我可以使用VBSCRIPT來完成。使用標記變量在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是標記變量。

在此先感謝。

+0

你總是在2個標記之間有4條線嗎?數據線始終是5位數字嗎? –

回答

2

如果你的樣本數據具有代表性,用分組的正則表達式:

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 
+0

感謝隊友..工作就像一個魅力..! – user2349910