2017-04-24 9 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の(または%)を使用し、substring関数と最後の文字を削除します。

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

しかし、あなたには、いくつかの理由のために ''「いくつかの/パス」のようなパスを持っていればどのような'' h "'を切り捨てると、パスは不正になりますか?最後の文字がスラッシュであるかどうかを確認するか、@ tommymaynardの解決方法を使用する –

+0

このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、[説明があれば大幅に改善されます] .stackexchange.com/q/114762)の質問にどう対処するか。それがなければ、あなたの答えははるかに教育的価値が低くなります。あなたが今質問している人だけでなく、将来の読者の質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

関連する問題