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

时间:2015-09-18 09:46:58

标签: 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, row => row.Contains(value));
if (pos > -1)
{
 //insert line at pos
}

但这似乎又回到了我第一次出现的指数。 " lastIndexOf()"似乎对我来说似乎不是正确的命令,因为这会查找给定值和数组中项目的相等性。

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

5 个答案:

答案 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)

Link to documentation

答案 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"));