Powershell;从每个路径中删除字符串中的最后一个'/'字符
问题描述:
我正在寻找从包含多个存储路径的字符串中删除最后的'/'字符,什么是最好的方法去关于这一点,我一直在接近,但我仍然无法完全得到我要找的东西,是一个循环真的是唯一的方法吗?Powershell;从每个路径中删除字符串中的最后一个'/'字符
$Paths = /some/path/1/ /some/path/2/ /some/path/3/
$Paths = $Paths.Remove($Paths.Length - 1)
$Index = $Paths.LastIndexOf('/')
$ID = $Paths.Substring($Index + 1)
目前我得到这样的错误如下:
Exception calling "Remove" with "1" argument(s): "Collection was of a fixed size."
的$期望的最终版本路径将
/some/path/1 /some/path/2 /some/path/3
任何帮助将不胜感激,我想我可能存在流程问题以及编码问题...
答
使用.TrimEnd()方法。
PS > $Paths = '/some/path/1/','/some/path/2/','/some/path/3/'
PS > $Paths
/some/path/1/
/some/path/2/
/some/path/3/
PS > $Paths = $Paths.TrimEnd('/')
PS > $Paths
/some/path/1
/some/path/2
/some/path/3
答
另一种方法,使用的foreach(或%),并删除最后一个字符用子功能:
$Paths = "/some/path/1/", "/some/path/2/", "/some/path/3/"
$Paths | %{$_.Substring(0, $_.length - 1) }
但如果你有一个像'“一些/路径”'出于某种原因的路径然后切断''h'',路径变得不正确?你应该检查,如果最后一个字符是斜杠,或者使用@tommymaynard的解决方案 –
尽管这段代码是受欢迎的,并且可以提供一些帮助,但它会[如果包含解释, .stackexchange.com/q/114762)*如何解决问题。没有这些,你的答案就没有什么教育价值了 - 记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –