在我的程序中,我有一个文本,我将其拆分为一行数组以分别修改这些行。
对于一个修改,我需要找到文本中值的最后一个索引,在下面的行中插入一个新值。
示例:
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()"似乎对我来说似乎不是正确的命令,因为这会查找给定值和数组中项目的相等性。
我做错了什么或是否有另一个命令,在这种情况下使用?
答案 0 :(得分:5)
我没有得到Array.FindLastIndex()
方法的错误。它的工作原理完全相同:
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”。
答案 1 :(得分:3)
如果您使用DateTimeFormatter
替换数组,那么您将获得一个不错的FindLastIndex()
方法,这正是您所需要的:
List<T>
答案 2 :(得分:0)
您可以使用List<T>
代替Array
。这将公开FindLastIndex()
方法,这将完全符合您的需要
答案 3 :(得分:0)
使用Linq
,您可以撤消数组。
int pos = Array.FindIndex(text.Reverse(), row => row.Contains(value));
if (pos > -1)
{
//insert line at pos
}
确保你改变了pos。所以它将与实际的数组兼容。例如:
pos = (text.Length-1-pos)
答案 4 :(得分:0)
输入是一个数组。首先,您必须将其转换为List()
string[] myArray= new string[]{"I like bananas",
"I like apples",
"I like cherries",
"I like bananas",
"I like apples"};
var pos = myArray.ToList().FindLastIndex(x => x.Contains("banana"));
或者您可以申请
var pos =Array.FindLastIndex(myArray,x => x.Contains("banana"));