下面的代码:
$TodayDate = Get-Date -Format "dd-MM-yyyy"
$Student = Student01 - Project 01-02 - $TodayDate
Write-Host -NoNewline -ForegroundColor White "$Student"; Write-Host -ForegroundColor Green " - was delivered!"
此脚本在控制台中返回:
Student01 - Project 01-02 - dd-MM-yyyy - was delivered
怎么可能只返回第一个“-"?之后的所有内容,即Project 01-02 - dd-MM-yyyy - was delivered
?
我曾考虑过使用.split,但我无法使它工作,以便它返回第一个“-"之后的所有内容。
1条答案
按热度按时间qlckcl4x1#
您的问题归结为想要从字符串中删除 * 前缀 。
如果要移除的前置词不能定义为静态的常值字串,而是由(包含)***第一个 * 出现的 * 分隔符号所定义,则您有两个PowerShell惯用的选项**:
-split
运算符,该运算符允许您限制生成的标记的数量**;如果将它们限制为 2,则第一个分隔符之后的所有内容都将按原样返回;因此,第二(也是最后一个)令牌(可通过索引[-1]
访问)则包含感兴趣的后缀:-replace
运算符,该运算符(默认情况下类似于-split
)基于regex,并且允许您制定一个 pattern,该 pattern 匹配第一个分隔符之前的任何前缀(包括第一个分隔符),然后可以删除该分隔符:^.+? -
)的解释以及使用它进行实验的能力,请参见this regex101.com page。