有时PowerShell非常棒,有时甚至完全令人沮丧和不直观。它几乎总是一个令我悲伤的阵列。
这次我有一个字符串数组。我想在白色空间上拆分每个字符串,以便最终得到一个字符串数组。我试过这个:
$data | ForEach-Object { $_.Split(@(), [System.StringSplitOptions]::RemoveEmptyEntries) }
但是这只是将所有内容压缩成一个大的字符串数组,例如C#中的SelectMany
。我也试过这个:
$data | Select-Object { $_.Split(@(), [System.StringSplitOptions]::RemoveEmptyEntries) }
但是这给了我一个PsCustomObject
的数组。我觉得这应该非常容易。我错过了一些完全明显的东西吗?
答案 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