2016-06-08 1 views
3

Я считаю, что это простой вопрос, но я не нашел решения и провел несколько часов, пытаясь понять, почему он не работает.пытается заменить строку в переменной на «;»

В переменной у меня есть строка: _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

Вы хотите для добавления строки кода после '_webconfig = new Object();'? –

+0

Что такое 'key' и' value'? Это словарь или 2 массива? –

+0

'key' и' value' - это просто строки, которые я получаю в этой функции 'function Replace-add-update ($ text, $ key, $ value)' –

ответ

2

Вероятно, все, что вам нужно сделать, это побег ваш regex строка из двух скобок:

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

$text= $text -replace [regex]::Escape($pattern), $replaceWith 
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)