如何在PowerShell中替换管道?

dro*_*ing 2 powershell

我想要替换字符串中的字符然后拆分它.示例如下:

$in = "string with spaces"
$out = $in -replace 's' | $_.Split(' ')
Run Code Online (Sandbox Code Playgroud)

导致ExpressionsMustBeFirstInPipeline.

为什么这不起作用?

Ans*_*ers 5

更换进入管道的结果没有任何问题,但您的下一步实际上并未从管道中读取.对于您选择的构造,您需要一个ForEach-Object循环:

$out = $in -replace 's' | ForEach-Object { $_.Split(' ') }
Run Code Online (Sandbox Code Playgroud)

或者调用Split()替换的结果(没有管道):

$out = ($in -replace 's').Split(' ')
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用-split运算符而不是Split()方法,则可以简单地对其进行菊花链连接(再次不使用管道):

$out = $in -replace 's' -split ' '
Run Code Online (Sandbox Code Playgroud)