Powershell 如何用大于10的间隔分隔一个不连续的整数序列?

Powershell 如何用大于10的间隔分隔一个不连续的整数序列?,powershell,sequence,Powershell,Sequence,在Powershell中:如何通过大于10的间隙来分隔已排序的非连续整数序列?为了更好地澄清,我设置了一个快速Excel表格,其中几乎解释了所有内容: 我当前的笨拙代码 $input = @(108,109,111,112,276,278,282,300,515,516,517,523,527, 552,553,554,555,556,557,558,559,561,562,563,706) $output = @() for($i=0; $i -lt $input.c

在Powershell中:如何通过大于10的间隙来分隔已排序的非连续整数序列?为了更好地澄清,我设置了一个快速Excel表格,其中几乎解释了所有内容:

我当前的笨拙代码

$input = @(108,109,111,112,276,278,282,300,515,516,517,523,527,
           552,553,554,555,556,557,558,559,561,562,563,706)

$output = @()
for($i=0; $i -lt $input.count; $i++){    
  if ($input[$i] -le ($input[$i+1])-10 ) {
   $output += $input[$i]
  }
}
$output += $input[$input.count-1]
正确的示例输出为
112282300527563706


问题:这可以用更简单的方法完成吗?我觉得我把它复杂化了。

像这样的事情?不确定它是否更漂亮,但它是“更强大的地狱”

请注意,
$input
是一个错误的变量名,因为powershell已经使用它作为枚举器访问整个管道流

$arr = @(108,109,111,112,276,278,282,300,515,516,517,523,527,552,553,554,555,556,557,558,559,561,562,563,706)

$arr | ForEach-Object -Begin { $last = $arr[0] } -Process {    
    if(($_ - $last) -gt 10) {
        $last
    }

    $last = $_
} -End { $arr[-1] }
输出:

112
282
300
527
563
706
或:

我有这个:

$array = @(108,109,111,112,276,278,282,300,515,516,517,523,527,552,553,554,555,556,557,558,559,561,562,563,706)
0..($array.count -2) | foreach { @($array[$_]) -lt $array[$_ + 1] - 10 }

112
282
300
527
563
$array = @(108,109,111,112,276,278,282,300,515,516,517,523,527,552,553,554,555,556,557,558,559,561,562,563,706)
0..($array.count -2) | foreach { @($array[$_]) -lt $array[$_ + 1] - 10 }

112
282
300
527
563