【问题标题】:Powershell - join nested string arraysPowershell - 加入嵌套的字符串数组
【发布时间】:2021-08-04 21:23:06
【问题描述】:

假设我有一个数组:

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

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

$stringArray -join ','

这会导致

a,b,c

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

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

我想得到

a1,a2,a3,b,c

???

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

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

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

【问题讨论】:

    标签: arrays string powershell jagged-arrays


    【解决方案1】:

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

    类似这样的:

    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
    

    【讨论】:

    • 然后是递归的。谢谢!
    猜你喜欢
    • 2014-12-21
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多