У меня есть следующий сценарий powershell, выполняющийся над классом C#, чтобы заменить конструктор на пустой конструктор. Я делаю это по нескольким файлам, которые были автогенерированы.Как заменить текст внутри фигурных скобок, используя Powershell?
$nl = [Environment]::NewLine
foreach($item in Get-ChildItem $path) {
if($item.extension -eq ".cs") {
$name = $item.name
$name = $name.replace('.cs', '')
$reg = '(public ' + $name + '\(.*?\})'
$constructorString = [regex]$reg
$emptyConstructor = 'public ' + $name + '()' + $nl + '{' + $nl + '}' + $nl
Get-Content $item.fullname -Raw | Where-Object { $_ -match $constructorString } | ForEach-Object { $_ -replace $constructorString, '$1'}
}
}
Классы имеют форму
public Bar()
{
this.foo = new Foo();
}
Это приводит не спички, дайте мне знать, если требуется дополнительная информация.
Вы можете просто совпадение с 'this.foo = new Foo();' или '" this. $ Name.ToLower() = new $ name() "' и заменить его пустой строкой? – rae1