如何从列表中查找元素的索引<;字符串>;,一个元素包含一个特定的部分

本文关键字:元素 一个 包含一 字符串 列表 查找 索引 gt lt | 更新日期: 2023-09-27 18:30:11

我有一个列表,其中包含。

1. This is house.
2. I am writing with pen.

现在我想知道字符串在哪个索引处包含house(1)如何在没有for循环的情况下做到这一点?Array.IndexOf将不起作用,因为它找不到具有相同匹配的元素

如何从列表中查找元素的索引<;字符串>;,一个元素包含一个特定的部分

查找第一个索引:

var idx = myList.FindIndex(x => x.Contains("abc"));

一种优雅的方法是使用FindIndex

List<String> exampleList = new List<String>();
exampleList.Add("This is a house.");
exampleList.Add("I am writing with pen");
int index = exampleList.FindIndex(x => x.Contains("house"));
Console.WriteLine(index); //0
index = exampleList.FindIndex(x => x.Contains("pen"));
Console.WriteLine(index); //1

FindIndex搜索与定义的条件匹配的元素通过指定的谓词,并返回首次出现在列表中或列表的一部分。

var indexes = Enumerable.Range(0, list.Length)
                        .Where(index => list[index].Contains("1."));

干净简单的

string[] data = { "This is house", "I am writing with pen." };
List<string> list = new List<string>(data);
int index = list.FindIndex(str => str.Contains("house"));
string key = "house";
var result = yourlist.Select((x,y)=>new{ListIndex = y, ElementIndex = x.IndexOf(key)})
          .Where(x=>x.ElementIndex > -1)
          .ToList();

使用此代码,您将得到一个匿名类型的集合,该集合具有两个属性:第一个属性具有列表的索引,第二个属性具有字符串

中的索引
int index = Array.FindIndex(list.ToArray(), i => i.Contains("house") );
myList.FindIndex(x => x.ToLower().Contains("house"))

如果您想以不区分大小写的方式进行搜索,那么这就是解决方案。