字符串数组到数组的数组

时间:2015-08-27 17:58:56

标签: powershell

有时PowerShell非常棒,有时甚至完全令人沮丧和不直观。它几乎总是一个令我悲伤的阵列。

这次我有一个字符串数组。我想在白色空间上拆分每个字符串,以便最终得到一个字符串数组。我试过这个:

$data | ForEach-Object { $_.Split(@(), [System.StringSplitOptions]::RemoveEmptyEntries) }

但是这只是将所有内容压缩成一个大的字符串数组,例如C#中的SelectMany。我也试过这个:

$data | Select-Object { $_.Split(@(), [System.StringSplitOptions]::RemoveEmptyEntries) }

但是这给了我一个PsCustomObject的数组。我觉得这应该非常容易。我错过了一些完全明显的东西吗?

2 个答案:

答案 0 :(得分:3)

您可以使用一元逗号(数组)运算符来阻止PowerShell枚举由Split方法返回的数组:

$data | ForEach-Object { ,$_.Split(@(), [System.StringSplitOptions]::RemoveEmptyEntries) }

答案 1 :(得分:2)

这个怎么样?我在这里做的是循环遍历数组中的所有元素,然后我执行拆分并使用String[]中返回的Split()替换当前项:

$Outer = "hello there", "how are you?", "I'm good, thanks"

for ($i = 0; $i -lt $Outer.Count; $i++) {
    $Outer[$i] = $Outer[$i].Split(" ")
}

$Outer[1][2]
# you?

$Outer[2][0]
# I'm