2011-08-31 147 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('/')); 
相关问题