PowerShell配列の各3番目の要素を削除します。

私は外部のプログラムからPowerShellにコピー&ペーストする非常に長い文字列を持っています。 それを分割した後(

$ variable = $ variable.split( "n")

)私は3番目の要素をすべて削除する配列を受け取りました。 それを達成する最も便利な方法は何ですか? 私はループについて考えました

0〜$ variable.lenght() - 1

私は3つに分割することができますかどうかをチェックしますが、別の方法がありますか?

0

5 答え

値を削除する必要がある場合は、配列内の3つの位置(0ベース:2,5,8,11,14など)を次のように使用します。

$newArray = @()
0..($variable.length) | % {
    if ((($_+1) % 3 ) -ne 0) {
        $newArray += $variable[$_]
    }
}
2
追加された

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

これは3番目の要素から開始し、3分の1ずつ取得します。パイプライン出力は$ newに保存されます。

2
追加された
私は戻って二重チェックに行くことにしました。私のコードを実行する100人のメンバーの配列を使用すると、1.0246ms必要でした。以前のForEachの例を使用すると、12.8752msかかりました。どちらの方法でも動作し、小さなアレイではパフォーマンスの差はごくわずかです。
追加された 著者 Jeffery Hicks,
$new_variable = $variable | foreach {$i=1} {if ($i++ %3){$_}}
1
追加された
$i = 0
$variable = $variable.split("`n") | ? {++$i % 3}
1
追加された

または

0..($variable.count-1) | fまたはeach { if($_%3) {$variable[$_]} }
0
追加された