String 删除PowerShell阵列中的第三个元素

String 删除PowerShell阵列中的第三个元素,string,powershell,String,Powershell,我有很长的字符串,我从外部程序复制并粘贴到PowerShell。 分裂之后( $variable=$variable.split(“'n”) )我收到了一个数组,我希望每三个元素从中删除一个。 最方便的方法是什么? 我从一开始就想到了回路 0到$variable.lenght()-1 然后检查我是否可以被3除,但可能还有其他方法?如果需要删除数组中任意3个位置的值(基于0的:2,5,8,11,14等),请使用以下方法: $newArray = @() 0..($variable.length)

我有很长的字符串,我从外部程序复制并粘贴到PowerShell。 分裂之后(

$variable=$variable.split(“'n”)

)我收到了一个数组,我希望每三个元素从中删除一个。 最方便的方法是什么? 我从一开始就想到了回路

0到$variable.lenght()-1


然后检查我是否可以被3除,但可能还有其他方法?

如果需要删除数组中任意3个位置的值(基于0的:2,5,8,11,14等),请使用以下方法:

$newArray = @()
0..($variable.length) | % {
    if ((($_+1) % 3 ) -ne 0) {
        $newArray += $variable[$_]
    }
}

如果需要删除数组中任意3个位置的值(基于0的:2、5、8、11、14等),请使用以下方法:

$newArray = @()
0..($variable.length) | % {
    if ((($_+1) % 3 ) -ne 0) {
        $newArray += $variable[$_]
    }
}
$new=for($i=2;$i-lt$array.count;$i+=3){$array[$i]}

这将从第三个元素开始,每三个元素获取一次。流水线输出保存为$new。

$new=for($i=2;$i-lt$array.count;$i+=3){$array[$i]}

这将从第三个元素开始,每三个元素获取一次。流水线输出保存为$new。

0..($variable.count-1) | foreach { if($_%3) {$variable[$_]} }


我决定回去仔细检查一下。使用包含100个成员的数组运行我的代码需要1.0246毫秒。使用前面的ForEach示例需要12.8752ms。这两种方法都有效,对于小型阵列,性能差异可以忽略不计。我决定返回并仔细检查。使用包含100个成员的数组运行我的代码需要1.0246毫秒。使用前面的ForEach示例需要12.8752ms。这两种方法都有效,对于小型阵列,性能差异可以忽略不计。
$i = 0
$variable = $variable.split("`n") | ? {++$i % 3}