假设我想从文件中读取一些字符串,并且对于每个字符串我想将其拆分。最后,我想获得字符串数组的数组。我尝试这样做的方法如下:
$toArchive = "./folders.txt"
$folderList = Get-Content $toArchive | ForEach-Object { @($_.split(" ")) }
Run Code Online (Sandbox Code Playgroud)
Get-Content应该返回一个字符串数组,对于每个字符串,我希望得到另一个字符串数组。但我的却不folderList是这样Object[],好像它被压扁了。例如,如果我的输入文件如下所示:
Docs /home/keddad/Documents/
NotDocs /home/keddad/NotDocuments/
Run Code Online (Sandbox Code Playgroud)
我得到 4 个元素的数组:
Docs
/home/keddad/Documents/
NotDocs
/home/keddad/NotDocuments/
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
更新:只是为了澄清一下,它绝对是 4 个字符串的数组:
PS /home/keddad/Documents/tbackup> $toArchive = "./folders.txt"
PS /home/keddad/Documents/tbackup> $folderList = Get-Content $toArchive | ForEach-Object { @($_.split(" ")) }
PS /home/keddad/Documents/tbackup> $folderList.count
4
PS /home/keddad/Documents/tbackup> $folderList
Docs
/home/keddad/Documents/
NotDocs
/home/keddad/NotDocuments/
Run Code Online (Sandbox Code Playgroud)
您缺少数组构造运算符,
(Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") }))
Run Code Online (Sandbox Code Playgroud)
哪个会渲染
> (Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") })).count
2
Run Code Online (Sandbox Code Playgroud)
我相信,您喜欢的结构,例如:
> (Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") }))[0]
Docs
/home/keddad/Documents/
> (Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") }))[0][0]
Docs
> (Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") }))[0][1]
/home/keddad/Documents/
Run Code Online (Sandbox Code Playgroud)
或者整体可视化为 JSON:
> (Get-Content .\folders.txt | ForEach-Object ({ ,$_.split(" ") })) | ConvertTo-Json
[
{
"value": [
"Docs",
"/home/keddad/Documents/"
],
"Count": 2
},
{
"value": [
"NotDocs",
"/home/keddad/NotDocuments/"
],
"Count": 2
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |