在包含值的字符串数组中查找字符串的最后一个索引
Find last index of string in string array containing a value
在我的程序中,我有一个文本,我将其拆分为一个行数组以分别修改这些行。
对于一个修改,我需要在文本中找到一个值的最后一个索引,以在下面的行中插入一个新值。
示例:
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
}
但这似乎是 return 我第一次出现的索引。
"lastIndexOf()" 对我来说似乎都不是正确的命令,因为它会寻找给定值与数组中项目的相等性。
我是不是做错了什么,或者在这种情况下是否有其他命令可以使用?
如果您用 List<T>
替换您的数组,您将得到一个不错的 FindLastIndex()
方法,这正是您要找的:
var texts = new List<string>(...);
var bananaIndex = texts.FindLastIndex(s => s.Contains("banana"));
您可以使用 List<T>
而不是 Array
。这将公开 FindLastIndex()
方法,这将完全满足您的需要
使用 Linq
你可以反转数组。
int pos = Array.FindIndex(text.Reverse(), row => row.Contains(value));
if (pos > -1)
{
//insert line at pos
}
但请务必更改 pos。所以它将与实际的 array.Something 兼容,例如:
pos = (text.Length-1-pos)
我不明白 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”。
输入是一个数组。所以首先你必须把它转换成 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"));
在我的程序中,我有一个文本,我将其拆分为一个行数组以分别修改这些行。
对于一个修改,我需要在文本中找到一个值的最后一个索引,以在下面的行中插入一个新值。
示例:
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
}
但这似乎是 return 我第一次出现的索引。 "lastIndexOf()" 对我来说似乎都不是正确的命令,因为它会寻找给定值与数组中项目的相等性。
我是不是做错了什么,或者在这种情况下是否有其他命令可以使用?
如果您用 List<T>
替换您的数组,您将得到一个不错的 FindLastIndex()
方法,这正是您要找的:
var texts = new List<string>(...);
var bananaIndex = texts.FindLastIndex(s => s.Contains("banana"));
您可以使用 List<T>
而不是 Array
。这将公开 FindLastIndex()
方法,这将完全满足您的需要
使用 Linq
你可以反转数组。
int pos = Array.FindIndex(text.Reverse(), row => row.Contains(value));
if (pos > -1)
{
//insert line at pos
}
但请务必更改 pos。所以它将与实际的 array.Something 兼容,例如:
pos = (text.Length-1-pos)
我不明白 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”。
输入是一个数组。所以首先你必须把它转换成 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"));