在PowerShell中的第一个连字符后获取所有字符

时间:2017-06-12 18:02:21

标签: powershell csv

我有一个凌乱的CSV文件,如下所示:

Name,Job Title,Employee Type
Bob Smith,3F03029G-IT Technician - Help Desk,Regular

我想使用PowerShell来清理"职位名称"领域。在过去,我可以使用拆分:

$title = $_."Job Title"
$cleanTitle = $title.split('-')[-1]

但是对于上面的例子,它会忽略第二个连字符后的所有内容:

IT Technician

而不是我想要的:

IT Technician - Help Desk

关于如何在列中的第一个连字符之后抓取所有内容而不是仅仅抓住第一个和第二个连字符之间的内容的任何想法?

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式替换开头

'3F03029G-IT Technician - Help Desk' -replace '^.*?-'

正则表达式只捕获包括第一个短划线在内的所有内容,并将其替换为

答案 1 :(得分:0)

可能是最低的计算开销:

$title.Substring($title.IndexOf('-') + 1)

可能最接近现有代码,将拆分限制为2件,取最后一件:

$title.Split('-', 2)[-1]

答案 2 :(得分:0)

使用带有3个参数的-split。第3个参数给出最大数字分割

像这样:

$stringtest="3F03029G-IT Technician - Help Desk"
($stringtest -split '-', 2)[1]