如何删除字符串中的通配符?

时间:2015-12-22 16:34:25

标签: powershell powershell-v3.0

我正在尝试以下内容......

$string = "*abc*"
$string = $string -replace "*",""
Write-Host $string

但是收到以下错误

Regular expression pattern is not valid: *.
At C:\Scripts\Tests\testing.ps1:3 char:1
+ $string = $string -replace "*",""
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (*:String) [], RuntimeException
    + FullyQualifiedErrorId : InvalidRegularExpression

我已经尝试-replace.replace.trim,但他们都没有工作,因为他们都将其作为正则表达式阅读。我还试过了"`*",但它仍然没有用。

任何人都知道如何让系统不作为正则表达式阅读?

4 个答案:

答案 0 :(得分:2)

尝试使用\来逃避它而不是反引号。

答案 1 :(得分:1)

你可以尝试一下吗?

$string = $string.replace('*','')

希望它能奏效!

答案 2 :(得分:1)

您可以使用方括号删除字符。

$string = $string -replace '[*]', ''

答案 3 :(得分:0)

如果您不希望系统使用正则表达式,那么您不应该使用像-replace这样的正则表达式运算符。字符串方法.Replace()也可以正常工作。你说.Trim()不起作用,但确实如此。可能会将您的真实数据问题与问题中的示例相关联。

PS C:\temp> "'{0}'" -f "*abc*".replace("*","")
'abc'

PS C:\temp> "'{0}'" -f "*abc*".Trim("* ")
'abc'

PS C:\temp> "'{0}'" -f "*  abc* ".Trim("* ")
'abc'