我在 Perl 中无数次使用过这种东西:
for ( $someVariable ) {
s/findthis/replaceitwiththis/g;
s/findthat/replaceitwithsomethingelse/g;
}
的值$someVariable
暂时在$_
,变量“就地”更新;每个新的替换命令都会继续更新/覆盖变量的内容。这是在一个简单的循环中完成大量更改的一种方便且紧凑的方法。
Powershell 是否具有与“for”等价的用法?
在@neolisk 的回复之后添加评论,以便我可以使用格式。
$s = 'abcde'
$s | foreach {
$_ -replace 'a','x'
$_ -replace 'e','z'
}
write-host "And: $s"
屏幕上看到的结果:
xbcde
abcdz
And: abcde
也试过$_ = $_ -replace 'a','x'
等等。这里必须有一些额外的语法才能获得“就地”替换......
在@Nacht 回复后进一步编辑。这行得通,尽管我对反引号并不感到疯狂:
$s = 'now is the time for all good individuals blah blah'
Write-Host $s
$s = $s `
-replace "now", 'NEVER' `
-replace 'time', 'moment' `
-replace "blah\s+blah", '-- oh, WHATEVER'
Write-Host $s
输出:
now is the time for all good individuals blah blah
NEVER is the moment for all good individuals -- oh, WHATEVER