如何提取PowerShell字符串中第一个'-'之后的全部内容?
提取PowerShell字符串中第一个'-'之后的内容
首先注意你的原始代码里$Student变量赋值存在语法错误,需要用引号包裹字符串(否则PowerShell会把Student01当作命令处理),修正后的基础代码如下:
$TodayDate = Get-Date -Format "dd-MM-yyyy" $Student = "Student01 - Project 01-02 - $TodayDate" $fullOutput = "$Student - was delivered!"
要提取第一个-之后的所有内容,可使用以下几种方法:
方法1:使用-split并指定分割次数
-split默认会分割所有匹配的字符,指定第二个参数为2时,只会在第一个匹配的-处分割字符串,之后取第二部分并去除开头多余空格:
$result = ($fullOutput -split '-', 2)[1].TrimStart() Write-Host $result
方法2:结合IndexOf和Substring
先找到第一个-的索引位置,再从该位置的下一位开始截取子字符串,最后去除开头空格:
$firstDashPos = $fullOutput.IndexOf('-') $result = $fullOutput.Substring($firstDashPos + 1).TrimStart() Write-Host $result
方法3:正则表达式匹配
通过正则表达式匹配第一个-之后的所有内容,利用$matches获取捕获的结果:
if ($fullOutput -match '^[^-]+-(.*)$') { $result = $matches[1].TrimStart() } Write-Host $result
以上三种方法都能输出你想要的结果:Project 01-02 - dd-MM-yyyy - was delivered
内容的提问来源于stack exchange,提问作者Tyrone Hirt
相关产品推荐
相关产品推荐

