2014-11-24 3 views
0

У меня есть следующая строка: $str = '"FirstName":"first name","LastName":"Last name","AskCatalog":false,"Nuteres":61","ZipCode":"1234"'как заменить строку с помощью PowerShell

и мне нужно заменить значение, например, FirstName: «first name» с переменной, как этот

"FirstName":"$strFristname" 
Can

кого показать мне, как я могу это сделать в PowerShell?

спасибо.

ответ

1

Как это:

$str -replace '("FirstName":)".*?"', "`$1`"$strFirstname`"" 

Шаблон ("FirstName":)".*?" совпадает со строкой "FirstName":, за которым следует двойной кавычки и самый короткий матч любого символа (.*?) до следующей двойной кавычки. Скобки создают группу, на которую может ссылаться $1 в заменяющей строке. Из-за двойных кавычек вокруг строки замены эта ссылка должна быть экранирована (`$1). То же самое касается вложенных двойных кавычек (`").

Если вы хотите переменную вместо его значение, чтобы показать в результате, вам нужно, чтобы избежать $ переменной, а также:

$str -replace '("FirstName":)".*?"', "`$1`"`$strFirstname`"" 

Демонстрация:

PS C:\>$str = '"FirstName":"first name","LastName":"Last name"' 
PS C:\>$strFirstname = 'Joe' 
PS C:\>$str -replace '("FirstName":)".*?"', "`$1`"$strFirstname`"" 
"FirstName":"Joe","LastName":"Last name" 
PS C:\>$str -replace '("FirstName":)".*?"', "`$1`"`$strFirstname`"" 
"FirstName":"$strFirstname","LastName":"Last name"
+0

Вы не забыли 'перед $ в заменяющей части? – JPBlanc

+0

@JPBlanc Мое понимание заключалось в том, что он хотел значения переменной, а не самой переменной. Если он хочет переменную, тогда вы правы. Я расширил свой ответ, чтобы охватить это. –

+0

@JPBlanc: Нет. Я хочу вставить переменную вместо имени. Странно, что я знаю, но это то, как они этого требуют. –

-1

Почему бы не будь проще?

$str -replace 'First Name', $strFirstname 
+0

имя не является постоянным. Он меняется, поэтому это может быть любое имя. –

Смежные вопросы