删除列表中最后出现的字符串

本文关键字:字符串 最后 删除列 列表 删除 | 更新日期: 2023-09-27 18:08:46

是否可以使用Linq从列表中删除字符串的最后一次出现?像这样:

var arr = "hello mom hello dad".Split(' ').ToList(); //hello mom hello dad
arr.RemoveLast(x => x.Contains("hello")); //hello mom dad

基本上是删除列表的最后一个出现项。我需要使用包含的字符串,它必须是一个列表。

删除列表中最后出现的字符串

list.RemoveAt(list.FindLastIndex(x => x.Contains("hello")));

上面的代码将删除最后一个包含"hello"的字符串。如果可能没有一个字符串项满足搜索条件,那么在这种情况下代码应该什么都不做,然后像这样:

int index = list.FindLastIndex(x => x.Contains("hello"));
if (index != -1)
    list.RemoveAt(index);

下面的代码将让您确定最后一个包含"hello"的项的索引,如果存在,则将其删除。它使用c# 6语法。

var arr = "hello mom hello dad".Split(' ').ToList(); 
var removeIndex = arr.Select((s,i) => new { Value = s, Index = i })
                     .LastOrDefault(x => x.Value.Contains("hello"))
                     ?.Index;
if(removeIndex.HasValue)
    arr.RemoveAt(removeIndex.Value); 

如何使用列表:

var arr = "hello mom hello dad".Split(' ').ToList();
arr.RemoveAt(arr.LastIndexOf("hello"));