Powershell 如何用大于10的间隔分隔一个不连续的整数序列?
在Powershell中:如何通过大于10的间隙来分隔已排序的非连续整数序列?为了更好地澄清,我设置了一个快速Excel表格,其中几乎解释了所有内容: 我当前的笨拙代码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
$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