Powershell - 加入嵌套的字符串数组

Powershell - join nested string arrays

假设我有一个数组:

$stringArray = @('a', 'b', 'c')

为了从中得到一个连接的字符串,我做了这样的事情:

$stringArray -join ','

它将导致

a,b,c

如果我有,我需要做什么(以干净高效的方式)

$stringArray = @(@('a1','a2','a3'), 'b', 'c')

我想得到

a1,a2,a3,b,c

???

更新:我当前的脚本是这样的:

($stringArray | %{$_ -join ','}) -join ','

但是这个锯齿状数组的维度是硬编码的(即它只适用于数组的数组,不适用于数组的数组的数组)。还有更优雅、更灵活的吗?

您需要的是一个递归辅助函数来展平数组。

像这样:

function Flatten-Array([array]$a) {
    $a | ForEach-Object {
        if ($_ -is [array]) { Array-Flatten $_ } else {$_ }
    }
}

用法:

$stringArray = @(@('a1','a2','a3'), 'b', 'c')
$flatArray = Flatten-Array $stringArray
$flatArray -join ','  # --> a1,a2,a3,b,c

或嵌套更深的数组:

$stringArray = @('X','Y','Z',@(@('a1','a2','a3',@(3,4,5)), 'b', 'c'))
$flatArray = Flatten-Array $stringArray
$flatArray -join ','  # --> X,Y,Z,a1,a2,a3,3,4,5,b,c