我知道这里已经广泛讨论了这个主题,但是我是PowerShell的新手,并且在替换表中的符号时遇到一些障碍。
在下面的图片中,数字列“ PRECOMEDIODISTRIBUICAO” 中有一些符号“-” 。
我运行了以下代码,以将此类符号替换为“ 0”数字:
$file = Import-Csv -Path $file -Delimiter "`t" |
Select PRECOMEDIODISTRIBUICAO | ForEach {$_ -Replace "\?_", 0}
但是得到了以下结果:
我尝试了多种方法将“-” 符号替换为 0 ,但没有成功。 例如:“-” ,“-” ,“ \-” ,“-” 不生成更正
您有更好的主意如何替换这样的字符串吗?
答案 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}}