2011-08-31 833 views
49

我有這樣的代碼:一個.Split()後,快速選擇最後一個元素

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

,我想在stringCuttedstring[]的最後一個元素來存儲分裂後,直接,快速,不存儲在一個變量中,並訪問與array[array.length]該元素的分裂陣列。

這是可能的C#?

+1

字符串 '板缺' ?????? –

+0

已經被切:)字符串 – markzzz

+1

不,我是意大利:) – markzzz

回答

95

如果您使用.NET 3.5或更高版本,這很容易使用LINQ到對象:

stringCutted = myString.Split('/').Last(); 

注意Last()(沒有謂詞)是對於其中源實現IList<T>(作爲一維數組那樣)的情況下因此這優化不會迭代整個數組,找到最後一個元素。在另一方面,優化是無證...

+4

是的,這是監守LINQ,你需要添加一個「使用System.Linq的;」到你的代碼。 – Rumplin

+1

這工作,但不是永遠。實際上'Split(「/」)'給我一個錯誤。 '斯普利特( '/')'的作品... – markzzz

+0

@markzzz:固定。我假設你發佈工作代碼開始(你的問題使用雙引號)。 –

22
stringCutted=myString.Split("/").Last() 

但是,僅供參考,如果你想從一個路徑獲得的文件名,這更好的作品堆:

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

使用LINQ

"t/e/s/t".Split("/").Last(); 
11

既然你要直接返回的最後一個元素,快速,無店劈裂陣列的解決方案,我認爲這可能是有用:

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

對於使用此代碼,我跳過從Url環節最後一個元素。

string url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')); 
相關問題