web-dev-qa-db-ja.com

.Split()の直後に最後の要素を選択する

私はこのコードを持っています:

stringCutted = myString.Split("/"). // ???

string[]を使用して、分割後の配列を変数に保存せずに、array[array.length]の最後の要素を直接、すばやく、stringCuttedに保存したい_。

これはC#で可能ですか?

60
markzzz

.NET 3.5以降を使用している場合、LINQ to Objectsを使用すると簡単です。

_stringCutted = myString.Split('/').Last();
_

Last() (述語なし)は、ソースが_IList<T>_を実装する場合に最適化されることに注意してください(一次元配列として)しない配列全体を反復処理して最後の要素を見つけます。一方、その最適化は文書化されていません...

125
Jon Skeet
stringCutted=myString.Split("/").Last()

ただし、パスからファイル名を取得しようとしている場合、参考までに、これはうまく機能します:

var fileName=System.IO.Path.GetFileName("C:\\some\path\and\filename.txt"); 
// yields: filename.txt
25
Jamiec

分割された配列を保存せずに、最後の要素を直接、迅速に返すソリューションが必要なので、これは便利だと思います:

stringCutted = myString.Substring(myString.LastIndexOf("/")+1);
12
escrubalo

LINQを使用する

"t/e/s/t".Split("/").Last();
2
Eduard

このコードを使用するために、Urlリンクから最後の要素をスキップします。

string url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/'));
1
Thivan Mydeen