2017-04-24 80 views
1

我正在尋找從包含多個存儲路徑的字符串中刪除最後的'/'字符,什麼是最好的方法去關於這一點,我一直在接近,但我仍然無法完全得到我要找的東西,是一個循環真的是唯一的方法嗎?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 

任何幫助將不勝感激,我想我可能存在流程問題以及編碼問題...

回答

5

使用.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 
0

另一種方法,使用的foreach(或%),並刪除最後一個字符用子功能:

$Paths = "/some/path/1/", "/some/path/2/", "/some/path/3/" 
$Paths | %{$_.Substring(0, $_.length - 1) } 
+0

但如果你有一個像'「一些/路徑」'出於某種原因的路徑然後切斷''h'',路徑變得不正確?你應該檢查,如果最後一個字符是斜槓,或者使用@tommymaynard的解決方案 –

+0

儘管這段代碼是受歡迎的,並且可以提供一些幫助,但它會[如果包含解釋, .stackexchange.com/q/114762)*如何解決問題。沒有這些,你的答案就沒有什麼教育價值了 - 記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

相關問題