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

How to remove wildcard in string?

我正在尝试以下...

$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,但其中 none 行得通,因为他们都将其作为正则表达式读取。我也试过"`*",还是不行

有人知道如何让系统不以正则表达式的形式读取吗?

你能试试这个吗?

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

希望有用!

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

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

尝试使用 \ 来转义它而不是反引号。

如果您不希望系统使用正则表达式,那么您不应该使用像 -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'