首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换powershell中的细节字符

替换powershell中的细节字符
EN

Stack Overflow用户
提问于 2014-04-18 19:55:47
回答 3查看 527关注 0票数 2

我正在尝试替换Powershell字符串中的字符以对其进行转义,以便稍后将其转换为JSON。我想将cmdline中的“双引号”替换为单引号后跟双引号,以转义双引号。

我有这个字符串:user123" -a.exe

我想要user123'" -a.exe

我尝试使用-replace函数进行不同的组合,例如

代码语言:javascript
复制
$test -replace '"',''"'

但由于这些人物的特殊性,没有人著述。

提前感谢您的帮助

EN

回答 3

Stack Overflow用户

发布于 2014-04-18 21:05:16

要强制Windows PowerShell从字面上解释双引号,请使用反引号(`)字符。

代码语言:javascript
复制
PS C:\> $test = "user123`" -a.exe"
PS C:\> $test
user123" -a.exe
PS C:\> $test = $test -replace "`"","'`""
PS C:\> $test
user123'" -a.exe

要了解使用引号的大多数变体和技巧,请键入

代码语言:javascript
复制
Help about_Quoting_Rules

在Powershell控制台上。

票数 3
EN

Stack Overflow用户

发布于 2014-04-18 20:00:58

需要使用反引号(`)字符来转义特殊字符,并使用String.Replace方法

代码语言:javascript
复制
$test = "user123`" -a.exe"
$test.replace("`"","`'`"")

结果:

代码语言:javascript
复制
user123'" -a.exe
票数 2
EN

Stack Overflow用户

发布于 2014-04-18 20:56:50

如果您正在处理一个被引用的文本,并且发现转义规则令人困惑和/或导致混淆的代码,您也可以将其作为here-string来处理。在here-string分隔符(@'-'@)中,常规引号规则不适用。它可以使代码变得更长,但在以后阅读和调试或进行维护时可能会更直观。

代码语言:javascript
复制
$string = @'
 user123" -a.exe
'@

$match = @'
"
'@

$replace = @'
"'
'@

 $string.replace($match,$replace)

 user123"' -a.exe

这显然是一个微不足道的例子,但随着引用文本和数量的增加,使用here-string的优势也将超过使用转义字符内联构造参数的优势。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23153617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档