C#数组从一行中获取split中的最后一项

时间:2011-10-18 21:27:42

标签: c# .net arrays

我知道这可以获得数组的第一项

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

6 个答案:

答案 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];