Учитывая этот массив:Группировка элементов в массиве
@("abc", 5, 4, 2, 7, 6, 5, 4, "abc", 7, 9, 3, "abc", 3, 2, 4)
Я хотел бы, чтобы в конечном итоге с массивом массивов:
@("abc", 5, 4, 2, 7, 6, 5, 4)
@("abc", 7, 9, 3)
@("abc", 3, 2, 4)
Т.е. разделите исходный массив на группы, каждая из которых включает в себя «abc» и элементы, которые следуют за ним до следующего «abc» или конца массива.
Вот один из способов сделать это:
$result = @("abc", 5, 4, 2, 7, 6, 5, 4, "abc", 7, 9, 3, "abc", 3, 2, 4)
$arrs = @()
$arr = @()
$result | ForEach-Object {
if ($_ -eq 'abc')
{
if ($arr.Count -gt 0) { $arrs += , $arr }
$arr = @()
}
$arr += $_
}
$arrs += , $arr
Есть ли более идиоматических способ в PowerShell?
Спасибо за ваш ответ Джозеф! – dharmatech