Ho bisogno di trovare la stringa "Test Case" & indice in un file txt.Trova stringa specifica in un file di testo con script VBS
Vi do un esempio delle linee si possono trovare in questo file:
<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>
Come si può vedere nella seconda riga ho un'occorrenza della stringa "Test Case".
Quello che voglio fare è aggiungere un'altra stringa particolare nella riga che precede quella in cui appare "Test Case 5". Per esempio:
<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>
E 'anche importante che la linea aggiungo ha un indice i che dipende dal numero di Test Case, e ho bisogno di aggiungere che prima della prima occorrenza di "Test Case" & i, io non preoccuparsi dei seguenti eventi.
ho provato se la funzione InStr ha lavorato con un esempio:
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
e funziona, riconosce la mia stringa. In questo piccolo esempio il file txt contans solo il followingline:
<tr><td><a href="../Test case 5 DD/Form1">Form1</a></td></tr>
Ora, quando provo ad anello su un file con molta più linee ho qualche problema, io uso la stessa funzione InStr. ho scritto il seguente ciclo:
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
Cosa c'è di sbagliato?
stavo anche pensando di usare espressioni Reg, ma Non sapevo da dove cominciare, mi sembrano aramaici! Anche se conosco java e visual basic non ho mai osato usarli. Terrò in considerazione questa possibilità, ma puoi darmi un buon link per un tutorial (per i manichini) sulla regex? – Luceye85
Prova [questo] (http://www.codeproject.com/Articles/939/An-Introduction-to-Regular-Expressions) e, naturalmente, la [documentazione] (http://msdn.microsoft.com/en -us/library/6wzad2b2). –