我知道这可以获得数组的第一项
string aString = @"hello/all\this\is/a\test";
string firstItemOfSplit = aString.Split(new char[] {'\\', '/'})[0];
//firstItemOfSplit = hello
有没有办法获得最后一项?像
这样的东西string aString = @"hello/all\this\is/a\test";
string lastItemOfSplit = aString.Split(new char[] {'\\', '/'})[index.last];
//lastItemOfSplit = test
答案 0 :(得分:27)
您可以使用System.Linq中的IEnumerable.Last()扩展方法。
string lastItemOfSplit = aString.Split(new char[] {@"\"[0], "/"[0]}).Last();
答案 1 :(得分:7)
喜欢使用IEnumerable.Last()扩展方法吗?包含System.Linq
,您就可以拥有它。
答案 2 :(得分:7)
你总是可以使用LINQ:
string lastItem = aString.Split(...).Last();
请注意,Enumerable.Last()
是 optimized when working on an IList<T>
并且您没有应用谓词 - 所以它甚至不会遍历序列来查找最后一个谓词。 (并不是说它可能是一个问题。)
答案 3 :(得分:3)
如果你可以使用Linq:
string aString = @"hello/all\this\is/a\test";
string lastItemOfSplit = aString.Split("\/".ToCharArray ()).Last();
这是一个更加GC友好的版本,不需要linq。
string aString = @"hello/all\this\is/a\test";
string lastItemOfSplit =
aString.Substring(aString.LastIndexOfAny(@"\/".ToCharArray ()) + 1);
答案 4 :(得分:0)
这个我尝试了它并且有效。
string LastItem= (@"hello/all\this\is/a\test").Split(new char[] {@"\"[0], "/"[0]}).Last();
Console.WriteLine(LastItem);
答案 5 :(得分:0)
对于.NET Core 3.0(和.NET Standard 2.1)(C#8),您可以使用索引类型(Documentation
):
string lastValue = aString.Split(new char[] { '\\', '/' })[^1];