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
假设我有一个数组:
$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