String Powershell从字符串中删除字符直到最后一个分隔符

String Powershell从字符串中删除字符直到最后一个分隔符,string,powershell,String,Powershell,我有一根绳子 项目\TestenEnvironment\11111 xx\1111111 需要从中获取1111111。我现在做的是: $name = $dir.Substring($dir.IndexOf('\')+1) 其中$dir是我的字符串,但它最多只删除第一个字符串,是否可以更改方向 用什么 返回1111111 请注意,-Leaf参数表示此cmdlet仅返回路径中的最后一项或容器。@Robin的答案是好的,如果字符串始终是路径(以“\”分隔);在一般情况下,如果分隔符可能是不同的字符,

我有一根绳子

项目\TestenEnvironment\11111 xx\1111111

需要从中获取1111111。我现在做的是:

$name = $dir.Substring($dir.IndexOf('\')+1)
其中$dir是我的字符串,但它最多只删除第一个字符串,是否可以更改方向

用什么

返回
1111111


请注意,
-Leaf
参数表示此cmdlet仅返回路径中的最后一项或容器。

@Robin的答案是好的,如果字符串始终是路径(以“\”分隔);在一般情况下,如果分隔符可能是不同的字符,则可以使用

$string = "This-is-a-string-with-delimiters"
$lastword = ($string -split "-")[-1]
-split
操作符默认为在空格上拆分,但将在您选择传递它的任何字符上拆分,返回一个字符串数组,每个字符串都是分隔符之前/之间/之后的内容-在上面的示例中,每个单词将位于数组中单独的字符串中。数组计数的负下标从数组的末尾开始,而不是从开始,并且是1-原点而不是0-原点-因此
$x[-1]
是数组的最后一个元素
$x

这种技术也适用于路径

$path = "C:\Users\JSmith\Documents\Resume.doc"
$filename = ($path -split "\\")[-1]
将为您提供
$filename
-eq
Resume.doc
。请注意,在本例中传递给
-split
的分隔符是转义的,因为分隔符可以是正则表达式,反斜杠(\)在正则表达式中是有意义的(它是表示另一个有意义的字符将被“转义”,或其意义被忽略的字符)。

其他解决方案

('Projects\TestEnvironment\11111xx\1111111' -split '\\')[-1]


这些似乎是针对目录路径的,因此在本例中,delimeter可能不会有问题。请注意,split支持正则表达式,因此您的最后一个示例将失败。@Matt-捕获良好;我忘记了
-split
支持正则表达式。已修复/更新。这也可以<代码>[io.path]::GetFileName(“Project\TestenEnvironment\11111 xx\1111111”)另一个:
$name=$dir-替换“^.\\”,“
('Projects\TestEnvironment\11111xx\1111111' -split '\\')[-1]
'Projects\TestEnvironment\11111xx\1111111'.Split('\')[-1]