0

例如,我正在尝试过滤文件名,我想要做的是过滤到下划线并保留其余部分。Info10_ComputerHostName 所以我运行

$FileName="Info10_ComputerHostName"
$FinalFileName = $FileName -split("*._")

当我输出变量时,我得到“ComputerHostName”

我想要什么“计算机主机名”

如何删除它总是返回的空格?

4

2 回答 2

0
$FinalFileName = ([regex]::Match($FileName,'([^_]*)_(.*)'))
$FinalFileName.Groups[2].Value

#or

$FileName.Split('_')[1]

于 2020-05-28T13:10:30.640 回答
0

使用$FinalFileName[1]. 证明:

$FileName="Info10_ComputerHostName"
$FinalFileName = $FileName -split ".*_"
$FinalFileName.GetType().FullName
$FinalFileName.Count
"`$FinalFileName   ='$FinalFileName'"
"`$FinalFileName[0]='$($FinalFileName[0])'"
"`$FinalFileName[1]='$($FinalFileName[1])'"
System.String[]
2
$FinalFileName   =' ComputerHostName'
$FinalFileName[0]=''
$FinalFileName[1]='ComputerHostName'

另一种方法 - 使用-replace运算符而不是-split如下:

$FileName="Info10_ComputerHostName"
$FinalFileName = $FileName -replace "^.*?_"
$FinalFileName.GetType().FullName
"`$FinalFileName   ='$FinalFileName'"
System.String
$FinalFileName   ='ComputerHostName'
于 2020-05-28T13:22:26.383 回答