我认为这是一个简单的问题,但我找不到解决方案,花了几个小时试图弄清楚它为什么不起作用。
在变量中我有一个字符串:_webconfig = new Object();
我想在它之后插入一行文字。
我尝试使用-replace
来完成它,但它无法正常工作,因为该功能将会“击中”。不止一次,导致模式x2。
由于;
变量末尾的$pattern
,这是我现在使用的代码(不起作用):
$Pattern = "_webconfig = new Object();"
$replaceWith = "$Pattern `n_webconfig.$key = `"$value`";"
# write-Host "Pattern: $Pattern, replaceWith: $replaceWith"
$text= $text -replace $pattern, $replaceWith
$text
将是js
文件,并且每行末尾都需要;
。我想要的结果是:
_webconfig = new Object();
将成为:
_webconfig = new Object();
_webconfig.env = "dev";
_webconfig.ServicesAppName= "Services";
我怎样才能做到这一点?
答案 0 :(得分:2)
由于两个括号,您可能需要做的就是转义您的regex
字符串:
$Pattern = "_webconfig = new Object();"
$replaceWith = "$Pattern `n_webconfig.$key = `"$value`";"
$text= $text -replace [regex]::Escape($pattern), $replaceWith
答案 1 :(得分:2)
如果key
和value
只是字符串,那么请使用String.Replace
:
$Pattern = "_webconfig = new Object();"
$replaceWith = "$Pattern `n_webconfig.$key = `"$value`";"
# write-Host "Pattern: $Pattern, replaceWith: $replaceWith"
$text= $text.Replace($pattern, $replaceWith)