代码之家  ›  专栏  ›  技术社区  ›  Fiddle Freak

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

  •  -1
  • Fiddle Freak  · 技术社区  · 10 年前

    我正在尝试以下操作。。。

    $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 回复  |  直到 10 年前
        1
  •  2
  •   Nate    10 年前

    尝试使用 \ 以逃避它而不是反勾。

        2
  •  1
  •   Vincent G    10 年前

    你能试试这个吗?

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

    希望它会起作用!

        3
  •  1
  •   dfundako    10 年前

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

    $string = $string -replace '[*]', ''
    
        4
  •  0
  •   Matt    10 年前

    如果您不希望系统使用正则表达式,那么不应该使用正则表达式运算符 -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'
    
    推荐文章