如何在powershell中用美元符号替换字符串

时间:2012-02-02 11:29:32

标签: powershell

在Powershell中给出以下字符串

$string = "this is a sample of 'my' text $PSP.what do you think"

如何使用-replace函数将字符串转换为

this is a sample of 'my' text Hello.what do you think

我显然需要以某种方式转义字符串,而且$ PSP在我的脚本中不是声明的变量

我需要更改$ PSP的所有提及其他字符串

4 个答案:

答案 0 :(得分:8)

使用反引号字符(Tab键上方):

$string = "this is a sample of 'my' text `$PSP.what do you think"

要使用-replace运算符替换美元符号,请使用反斜杠转义它:

"this is a sample of 'my' text `$PSP.what do you think" -replace '\$PSP', 'hello'

或者使用string.replace方法:

$string = "this is a sample of 'my' text `$PSP.what do you think"
$string.Replace('$PSP','Hello)'

这是“我的”文本Hello的样本。您认为

答案 1 :(得分:0)

除非您修改原始字符串(例如,通过转义$),否则这是不可能的。 您的$string确实不包含$PSP,因为它在赋值语句中没有替换。

$string = "this is a sample of 'my' text $PSP.what do you think"
$string -eq "this is a sample of 'my' text .what do you think"

评估为:

True

答案 2 :(得分:0)

即使它确实很旧,它还是google中的第一个答案,所以我将添加一些细微的变化。

以我为例,我正在读取文件,并用$ s替换字符串。

我文件的简称为:

<version>$version$<version>

如果对一个(文件)流执行操作,变量不会自动替换,因此无需在文件中转义$。

在替换模式中,可以避免使用'而不是'解释变量。

我的最终命令如下:

 (gc $fileName) | % { $_.replace('$version$', "$BuildNumber") } | sc  $fileName

这是通过替换通过管道读取(获取内容)并返回到具有设置内容的文件的文件。

答案 3 :(得分:-1)

你应该试试

  

$ string = $ string.Replace(“\ $ PSP”,“Hello”)

  

$ string = $ string.Replace(“\ $ PSP”,$ the_new_value)

或更通用的使用Regex

  

$ string = [regex] :: Replace($ string,“\ $ \ w +”,“Hello”)