在.Split()之后快速选择最后一个元素


68

我有这个代码:

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

而且我想直接快速地存储在split之后stringCutted的最后一个元素中string[],而不必将分割后的数组存储在变量中,并使用访问该元素array[array.length]

这在C#中可能吗?


3
字符串'Cutted'??????
Phill Healey 2014年

1
一个已经被切掉的字符串:)
markzzz 2014年

Answers:


147

如果您使用的是.NET 3.5或更高版本,则使用LINQ to Objects很容易:

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

请注意,Last()(没有谓词)针对源实现IList<T>(如一维数组)的情况进行了优化,因此不会遍历整个数组以查找最后一个元素。另一方面,该优化未记录在案...


4
是的,这是因为LINQ,您需要添加一个“ using System.Linq;”。您的代码。
鲁普林

1
这行得通,但永远不会。实际上Split("/")给我一个错误。Split('/')作品...
markzzz

@markzzz:固定。我以为您是以发布工作代码开头的(您的问题使用双引号)。
乔恩·斯基特

是的 实际上那是错误的:)我在发布问题之前尝试了Last()。嘿,谢谢
markzzz

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

但是,仅供参考,如果您尝试从路径中获取文件名,则可以更好地进行堆工作:

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

13

由于您需要一个直接返回最后一个元素而不需要存储拆分数组的解决方案,因此我认为这可能很有用:

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


2

为了使用此代码,我跳过了Url链接中的最后一个元素。

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

0

补充:

当字符串格式一样'a/b/c/d',然后

yourstring.Split("/").Last();

当字符串格式像 \head_display\27_[Item A]\head_image\original_image\1_Item A.png

yourstring.Split("\\").Last();

第一个“ \”实际上跳过第二个“ \”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.