在一个字符串列表查找字符串(Find substring in a list of strings)

2019-06-24 05:42发布

我有像这样的列表,我希望能够到这个列表中搜索来自另一个字符串来一子。 例:

List<string> list = new List<string>();
string srch = "There";
list.Add("1234 - Hello");
list.Add("4234 - There");
list.Add("2342 - World");

我想搜索"There"我的列表,并返回内"4234 - There" 。 我试过了:

var mySearch = list.FindAll(S => s.substring(srch));
foreach(var temp in mySearch)
{
    string result = temp;
}

Answer 1:

使用LINQ,只是检索的第一个结果:

string result = list.FirstOrDefault(s => s.Contains(srch));

要做到这一点W / O的LINQ(如早期的.NET版本,如.NET 2.0),您可以使用List<T>FindAll方法,在这种情况下会返回包含搜索项列表中的所有项目:

var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); });


Answer 2:

要返回所有条目次:

IEnumerable<string> result = list.Where(s => s.Contains(search));

只有第一种:

string result = list.FirstOrDefault(s => s.Contains(search));


Answer 3:

什么你写会导致编译错误

对于“string.Substring(INT)”的最佳重载的方法匹配具有一些无效参数

子用来得到使用字符位置和/或所得到的字符串的长度字符串的一部分。

例如srch.Substring(1, 3)返回字符串“她的”

正如其他都提到你应该使用Contains如果在另一个出现一个字符串,它告诉你。 如果你想知道你会用实际位置IndexOf



Answer 4:

我喜欢用的indexOf或含有

someString.IndexOf("this");
someString.Contains("this");


Answer 5:

同样的问题,我不得不这样做。

你需要这个:

myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)

哪里:

myListList<String>具有这样的值myString必须包含在任意的位置

所以,事实上,你如果搜索的myString包含任何从列表中的条目。 希望这是你想要的东西......



Answer 6:

而对于CaseSensitive使用:

YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToLower().Contains("some substring"));

要么

YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToUpper().Contains("some substring"));


文章来源: Find substring in a list of strings