如何在PowerShell中替换管道?

时间:2018-01-15 15:05:39

标签: powershell

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

$in = "string with spaces"
$out = $in -replace 's' | $_.Split(' ')

导致ExpressionsMustBeFirstInPipeline

为什么这不起作用?

3 个答案:

答案 0 :(得分:5)

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

$out = $in -replace 's' | ForEach-Object { $_.Split(' ') }

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

$out = ($in -replace 's').Split(' ')

但是,如果您使用-split运算符而不是Split()方法,则只需将其菊花链式连接(再次不使用管道):

$out = $in -replace 's' -split ' '

答案 1 :(得分:2)

试试这个

$in = "string with spaces"
$out = $in -split ' '  -replace 's'
echo $out

答案 2 :(得分:1)

您可以改用Replace字符串方法。例如,用空格替换s,然后用然后拆分空格:

$out = $in.Replace('s','').split(' ')