Select last element quickly after a .Split()
I have this code :
stringCutted = myString.Split("/"). // ???
and I'd like to store in stringCutted
the last element of the string[]
after the split, directly, quickly, without storing the splitted array in a variable and access to that ele开发者_如何转开发ment with array[array.length]
.
Is this possible in C#?
If you're using .NET 3.5 or higher, it's easy using LINQ to Objects:
stringCutted = myString.Split('/').Last();
Note that Last()
(without a predicate) is optimized for the case where the source implements IList<T>
(as a single-dimensional array does) so this won't iterate over the whole array to find the last element. On the other hand, that optimization is undocumented...
stringCutted=myString.Split("/").Last()
But, just FYI, if you're trying to get a filename from a path, this works heaps better:
var fileName=System.IO.Path.GetFileName("C:\\some\path\and\filename.txt");
// yields: filename.txt
Since you want a solution that returns the last element directly, quickly, without store the splitted array, i think this may be useful:
stringCutted = myString.Substring(myString.LastIndexOf("/")+1);
Use LINQ
"t/e/s/t".Split("/").Last();
For using this code, I skip last element from the Url
link.
string url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/'));
For Addition:
When string format like 'a/b/c/d'
then
yourstring.Split("/").Last();
When string format like \head_display\27_[Item A]\head_image\original_image\1_Item A.png
yourstring.Split("\\").Last();
first '\' actually to skip second '\'
精彩评论