我正在尝试替换Powershell字符串中的字符以对其进行转义,以便稍后将其转换为JSON。我想将cmdline中的“双引号”替换为单引号后跟双引号,以转义双引号。
我有这个字符串:user123" -a.exe
我想要user123'" -a.exe
我尝试使用-replace函数进行不同的组合,例如
$test -replace '"',''"'但由于这些人物的特殊性,没有人著述。
提前感谢您的帮助
发布于 2014-04-18 21:05:16
要强制Windows PowerShell从字面上解释双引号,请使用反引号(`)字符。
PS C:\> $test = "user123`" -a.exe"
PS C:\> $test
user123" -a.exe
PS C:\> $test = $test -replace "`"","'`""
PS C:\> $test
user123'" -a.exe要了解使用引号的大多数变体和技巧,请键入
Help about_Quoting_Rules在Powershell控制台上。
发布于 2014-04-18 20:00:58
需要使用反引号(`)字符来转义特殊字符,并使用String.Replace方法
$test = "user123`" -a.exe"
$test.replace("`"","`'`"")结果:
user123'" -a.exe发布于 2014-04-18 20:56:50
如果您正在处理一个被引用的文本,并且发现转义规则令人困惑和/或导致混淆的代码,您也可以将其作为here-string来处理。在here-string分隔符(@'-'@)中,常规引号规则不适用。它可以使代码变得更长,但在以后阅读和调试或进行维护时可能会更直观。
$string = @'
user123" -a.exe
'@
$match = @'
"
'@
$replace = @'
"'
'@
$string.replace($match,$replace)
user123"' -a.exe这显然是一个微不足道的例子,但随着引用文本和数量的增加,使用here-string的优势也将超过使用转义字符内联构造参数的优势。
https://stackoverflow.com/questions/23153617
复制相似问题