Potrzebuję znaleźć ciąg "Test Case" & indeksu w pliku txt.Znajdź konkretny ciąg w pliku tekstowym ze skryptem VBS
dam wam przykład linii można znaleźć w tym pliku:
<tr><td><a href="../../Login/Log_ in_U1A1">Log_ in_U1A1</a></td></tr>
<tr><td><a href="../Test case 5 DD/Form1">Form1</a></td></tr>
Jak widać w drugim wierszu Mam wystąpienie napisu „Test case”.
Co chcę zrobić, to dodać kolejny konkretny ciąg w linii, która poprzedza ten, w którym pojawia się "Test Case 5". Na przykład:
<tr><td><a href="../../Login/Log_ in_U1A1">Log_ in_U1A1</a></td></tr>
<tr><td><a href="../../Logs/DD/Beginning_of_DD_TC5.html">Beginning_of_DD_TC5</a></td></tr>
<tr><td><a href="../Test case 5 DD/Form1">Form1</a></td></tr>
Ważne jest również, że linia dodaję ma indeks i który zależy od liczby przypadków testowych, a muszę dodać go przed pierwszym wystąpieniem „test case” & ja, ja nie dbaj o następujące zdarzenia.
Testowałem jeśli funkcja InStr pracował na przykładzie:
Dim objFSO, filepath, objInputFile, tmpStr, substrToFind
Set objFSO = CreateObject("Scripting.FileSystemObject")
filepath = "C:\VBS\filediprova.txt"
substrToFind = "<tr><td><a href=" & chr(34) & "../Test case 5"
Set objInputFile = objFSO.OpenTextFile(filepath)
tmpStr = objInputFile.ReadLine
If InStr(tmpStr, substrToFind) <= 0 Then
WScript.Echo "No matches"
Else
WScript.Echo "Found match"
End If
I to działa, rozpoznaje mojego podciąg. W tej niewielkiej przykład plik txt contans tylko następujący wiersz:
<tr><td><a href="../Test case 5 DD/Form1">Form1</a></td></tr>
Teraz, gdy próbuję pętli nad plikiem z dużo większej liczby linii mam jakiś problem, używam tej samej funkcji InStr. napisałem następującą pętlę:
Do until objInputFile.AtEndOfStream
strToAdd = "<tr><td><a href=" & chr(34) & "../../Logs/DD/Beginning_of_DD_TC" & CStr(index) & ".html" & chr(34) & ">Beginning_of_DD_TC" & CStr(index) & "</a></td></tr>"
substrToFind = "<tr><td><a href=" & chr(34) & "../Test case " & index
firstStr = "<?xml version" 'my file always starts like this
tmpStr = objInputFile.ReadLine
If InStr(tmpStr, substrToFind) <= 0 Then
If Instr(tmpStr, firstStr) > 0 Then
text = tmpStr 'to avoid the first empty line
Else
text = text & vbCrLf & tmpStr
End If
Else
text = text & vbCrLf & strToAdd & vbCrLf & tmpStr
index = index + 1
End If
Loop
Co się stało?
Byłem też myśleć o użyciu wyrażenia reg, ale Nie wiedziałem, od czego zacząć, wydają mi się aramejskie! Chociaż znam java i visual basic, nigdy nie odważyłem się ich użyć. Zastanowię się nad tą możliwością, ale czy możesz dać mi dobry link do samouczka (dla manekinów) o regex? – Luceye85
Wypróbuj [this] (http://www.codeproject.com/Articles/939/An-Introduction-to-Regular-Expressions) i oczywiście [dokumentacja] (http://msdn.microsoft.com/en -us/library/6wzad2b2). –