在PowerShell中替换字符串:“-”

时间:2018-07-20 17:09:58

标签: powershell replace powershell-ise

我知道这里已经广泛讨论了这个主题,但是我是PowerShell的新手,并且在替换表中的符号时遇到一些障碍。

在下面的图片中,数字列“ PRECOMEDIODISTRIBUICAO” 中有一些符号“-”

enter image description here

我运行了以下代码,以将此类符号替换为“ 0”数字:

$file = Import-Csv -Path $file -Delimiter "`t" | 
Select PRECOMEDIODISTRIBUICAO | ForEach {$_ -Replace "\?_", 0} 

但是得到了以下结果:

enter image description here

我尝试了多种方法将“-” 符号替换为 0 ,但没有成功。 例如:“-” “-” “ \-” “-” 不生成更正

您有更好的主意如何替换这样的字符串吗?

2 个答案:

答案 0 :(得分:4)

尝试:

Import-Csv -Path $file -Delimiter "`t" | ForEach {

    $_.PRECOMEDIODISTRIBUICAO = $_.PRECOMEDIODISTRIBUICAO -Replace '-', '0'
    $_
}

您的Select PRECOMEDIODISTRIBUICAO应该(应该是!)丢掉其他列,而您在$_ -replace上进行的替换尝试将整个对象及其所有属性转换为一个字符串,然后进行替换,然后不在任何地方保存替换的文本。我不知道正则表达式中的\?在做什么,但是看起来没有必要。

答案 1 :(得分:3)

您可以使用以下代码动态修改字符串。 “ l”表示标签,e表示表达。在表达式中,您几乎可以对传递的值进行任何操作。在此示例中,将'-'替换为0

Import-Csv -Path $file -Delimiter "`t" |Select @{l="PRECOMEDIODISTRIBUICAO";e={$_.PRECOMEDIODISTRIBUICAO -replace '-', 0}}