尝试用";"替换变量中的字符串

时间:2016-06-08 14:24:45

标签: powershell powershell-v3.0

我认为这是一个简单的问题,但我找不到解决方案,花了几个小时试图弄清楚它为什么不起作用。

在变量中我有一个字符串:_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";
  • '键'和#'价值观'包含正确的价值观。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

由于两个括号,您可能需要做的就是转义您的regex字符串:

$Pattern = "_webconfig = new Object();"
$replaceWith =  "$Pattern `n_webconfig.$key = `"$value`";"       

$text= $text -replace [regex]::Escape($pattern), $replaceWith

答案 1 :(得分:2)

如果keyvalue只是字符串,那么请使用String.Replace

$Pattern = "_webconfig = new Object();"
$replaceWith =  "$Pattern `n_webconfig.$key = `"$value`";"       

# write-Host "Pattern: $Pattern, replaceWith: $replaceWith"
$text= $text.Replace($pattern, $replaceWith)