我有一个PowerShell脚本,它在预构建事件中运行,该事件打开一个文件
$file="$(get-location)\..\..\Generated.cs"
Write-host $file
$content = Get-Content($file)
$content = $content.replace('input','output')
$content | out-file $file
输入是 generated.cs 文件
中的以下代码行return new Blablabla<Template>((int)code, a, default<Template>));
输出需要成为
{
var response = new Blablabla<Template>((int)code, a, default<Template>));
response.message = status;
return response;
}
<Template>
是可变的。它可以是任何类,甚至是通用列表
我如何在PowerShell中执行此操作?无论我尝试使用正则表达式都失败了
它应该不难,但我在PowerShell或正则表达式方面不是很好
答案 0 :(得分:0)
以下内容应该按照您的要求替换文本,尽管在.cs
文件中这似乎是一个奇怪的替代:
$pattern = 'return (new .*<(.*)>\(\(int\).*, .*, default\(\2\)\);)'
$file = "Generated.cs"
Get-Content -Path $file -Raw |
ForEach-Object {
if($_ -match $pattern)
{
$template = "
{
var response = $($matches[1])
response.message = status;
return response;
}
"
$_ -replace $pattern, $template | Out-File $file
}
}