我有以下字符串:$str = '"FirstName":"first name","LastName":"Last name","AskCatalog":false,"Nuteres":61","ZipCode":"1234"'
我需要用这样的变量替换FirstName:“first name
”的值
"FirstName":"$strFristname"
任何人都可以告诉我如何在PowerShell中执行此操作?
谢谢。
答案 0 :(得分: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"
答案 1 :(得分:-1)
为什么不保持简单?
$str -replace 'First Name', $strFirstname