我的数组由多个成员组成,如下面的文件结构。我想把每个成员切成多个子串并重新组合。我知道这对单个子串切割有效,但当我试图将多个子串组装在一起时,它不起作用。我该如何解决这个问题?
#File Structure: [0-9]{3} [A-Z] [A-Z]{2} [0-9]{2}K[0-9]b [0-9]{2} [A-Z]{2} [A-Z] [0-9]{2} [A-Z]{3}.*
#Example: 110 B CC 12K48b 02 SC C 01 BRP
$fileList=@()
$labelStr=@()
$fileList+=(get-childitem -filter *.tif -recurse | Where-Object {$_.name -match '^[0-9]{3} (B|F) [A-Z]{2} ..K..b [0-9]{2}.*'}).Name
$labelStr+=(($fileList.Substring(27,3)+" "+$fileList.Substring(16,2)+" "+$fileList.Substring(0,3)) | Sort-Object | Get-Unique)
$labelStr #I would expect an array member to look like: BRP 02 110. However, I get:
PS:>
BRP
02
110
1条答案
按热度按时间von4xj4u1#
使用单个管道,让PowerShell将结果收集到数组中:
至于你尝试过的:
$fileList
包含一个 array 的文件名,当您在该数组上调用.Substring()
时,它会在该数组的 * 每个元素 * 上调用,结果也会变成一个 array 的结果,这是由PowerShell的member-access enumeration提供的(您也可以使用它通过.Name
获取文件名)。相反,您必须处理名称 * 一个接一个 *,如上所示。
下面是一个简化的示例,它尝试使用
.Substring()
调用来反转输入字符串中的字符: