Мне нужно найти строку «Test Case» & index в txt-файле.Найти конкретную строку в текстовом файле с помощью сценария VBS
Я приведу вам пример из линий вы можете найти в этом файле:
<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>
Как вы можете видеть на второй линии у меня есть вхождение строки «Test Case».
Что я хочу сделать, это добавить еще одну строку в строку, которая предшествует той, где появляется «Test Case 5». Например:
<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>
Это также важно, чтобы линия добавить имеет индекс я, который зависит от количества тестового случая, и мне нужно, чтобы добавить его до первого появления «Test Case» & я, я не заботиться о следующих случаях.
Я проверил, если функция InStr работала с примером:
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
И это работает, он признает свою подстроку. В этом небольшом примере текстовый файл только contans в followingline:
<tr><td><a href="../Test case 5 DD/Form1">Form1</a></td></tr>
Теперь, когда я пытаюсь перебрать файл с гораздо более строк у меня есть какая-то проблема, я использую ту же функцию InStr. Я написал следующий цикл:
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
Что случилось?
Я также думал об использовании REG выражений, но Я не знал, с чего начать, они кажутся мне арамейскими! Несмотря на то, что я знаю java и visual basic, я никогда не осмеливался их использовать. Я буду учитывать эту возможность, но можете ли вы дать мне хорошую ссылку для учебника (для чайников) о регулярном выражении? – Luceye85
Попробуйте [это] (http://www.codeproject.com/Articles/939/An-Introduction-to-Regular-Expressions) и, конечно, [документация] (http://msdn.microsoft.com/ru -us/библиотека/6wzad2b2). –