Я бы рекомендовал использовать регулярные выражения вместо строковых операций для этого:
Set fso = CreateObject("Scripting.FileSystemObject")
filename = "C:\VBS\filediprova.txt"
newtext = vbLf & "<tr><td><a href=""..."">Beginning_of_DD_TC5</a></td></tr>"
Set re = New RegExp
re.Pattern = "(\n.*?Test Case \d)"
re.Global = False
re.IgnoreCase = True
text = f.OpenTextFile(filename).ReadAll
f.OpenTextFile(filename, 2).Write re.Replace(text, newText & "$1")
Регулярное выражение будет соответствовать фиду линии (\n
), за которым следует строка, содержащая строку Test Case
, а затем номер (\d
), и замена добавит этот текст с текстом, который вы хотите вставить (переменная newtext
). Установка re.Global = False
делает остановку замены после первого совпадения.
Если строка в текстовом файле закодирована как CR-LF
(возврат каретки + строка), вам придется изменить \n
в \r\n
и vbLf
в vbCrLf
.
Если вам нужно изменить несколько текстовых файлов, вы можете сделать это в цикле следующим образом:
For Each f In fso.GetFolder("C:\VBS").Files
If LCase(fso.GetExtensionName(f.Name)) = "txt" Then
text = f.OpenAsTextStream.ReadAll
f.OpenAsTextStream(2).Write re.Replace(text, newText & "$1")
End If
Next
Каков правильный способ работы здесь?
Вы должны добавить условие к цели импорта :
<ImportGroup Label="ExtensionTargets"> <Import Project="..\packages\xxx\xx.targets" Condition="Exists('..\packages\xxx\xx.targets')" /> </ImportGroup>
Когда мы создаем проект Google Test, он по умолчанию импортирует файл
.targets
в файл проекта.vcxproj
. Вы можете выгрузить проект и отредактировать его, вы будете следовать инструкциям импорта:<ImportGroup Label="ExtensionTargets"> <Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" Condition="Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" /> </ImportGroup>
Не знаете, почему
Condition="Exists('..\packages\xx.targets')"
был потерян в вашем заявлении на импорт, чтобы решить эту проблему, добавьте условие к Импорт цели.Надеюсь, это поможет.
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
внизу, который содержит элемент, называемый<Error Condition="!Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets'))" />
- связанный? – BareMetalCoder 16 July 2018 в 03:15