gpt4 book ai didi

Powershell:相当于 Perl 的 'for' 命令?

转载 作者:行者123 更新时间:2023-12-02 00:15:36 25 4
gpt4 key购买 nike

我在 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

最佳答案

在Powershell中就是这样,只是语法略有不同:

$someVariable | foreach {
Write-Host $_;
}

如果您想就地替换,请记住 $_ 是不可变的,即只读的。正确的方法是在管道上输出新字符串并收集到另一个变量中,因此对于您的示例,它可能如下所示:

$s = 'abcde' 
$newS = $s | foreach {
$_ -replace 'a','x' -replace 'e','z'
}
write-host "And: $newS";

关于Powershell:相当于 Perl 的 'for' 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com