C# 在包含值的字符串数组中查找字符串的最后一个索引

C# 在包含值的字符串数组中查找字符串的最后一个索引,c#,.net,arrays,indexing,contain,C#,.net,Arrays,Indexing,Contain,在我的程序中,我有一个文本,我将它拆分成一个行数组来分别修改这些行。 对于一个修改,我需要找到文本中某个值的最后一个索引,在下面的行中插入一个新值 例如: text=["I like bananas", "I like apples", "I like cherries", "I like bananas", "I like apples"] value: "bananas" 我已经尝试使用: int pos = Array.FindIndex


在我的程序中,我有一个文本,我将它拆分成一个行数组来分别修改这些行。 对于一个修改,我需要找到文本中某个值的最后一个索引,在下面的行中插入一个新值

例如:

text=["I like bananas",
      "I like apples",
      "I like cherries",
      "I like bananas",
      "I like apples"]

value: "bananas"
我已经尝试使用:

int pos = Array.FindIndex(text, row => row.Contains(value));
if (pos > -1)
{
 //insert line at pos
}
但这似乎给了我第一次出现的索引。 “lastIndexOf()”似乎对我来说都不是正确的命令,因为这会查找给定值与数组中的项是否相等

int pos = Array.FindIndex(text.Reverse(), row => row.Contains(value));
if (pos > -1)
{
 //insert line at pos
}

我是做错了什么,还是在这种情况下使用了另一个命令?

如果您将数组替换为
List
,您将得到一个很好的方法,这正是您想要的:

var texts = new List<string>(...);
var bananaIndex = texts.FindLastIndex(s => s.Contains("banana"));
var text=新列表(…);
var bananaIndex=text.findlastinex(s=>s.Contains(“香蕉”);

您可以使用
列表
而不是
数组
。这将公开
findlastinex()
方法,该方法将完全满足您的需要

使用
Linq
可以反转数组

int pos = Array.FindIndex(text.Reverse(), row => row.Contains(value));
if (pos > -1)
{
 //insert line at pos
}
不过,请确保您更改了pos。因此它将与实际阵列兼容。类似于:
pos=(text.Length-1-pos)


我不知道
数组.findlastedex()方法有什么问题。它的工作原理完全相同:

string value = "bananas";
string[] arr = 
{
    "I like bananas", 
    "I like apples",
    "I like cherries",
    "I like bananas",
    "I like apples"
};

Console.WriteLine(Array.FindLastIndex(arr, x => x.Contains(value)));

此代码适用于我并输出“3”。

输入是一个数组。因此,首先必须将其转换为
List()

或者你可以申请

var pos =Array.FindLastIndex(myArray,x => x.Contains("banana"));

是的,你说得对。似乎我试图以另一种方式使用这个方法,而不是findIndex方法。非常感谢。