在字符串列表中查找子字符串

时间:2012-05-07 20:23:13

标签: c# .net string linq substring

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

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;
}

6 个答案:

答案 0 :(得分:26)

使用Linq,只需检索第一个结果:

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

要使用Linq(例如早期的.NET版本,例如.NET 2.0),您可以使用List<T>的{​​{1}}方法,在这种情况下,它将返回包含搜索词的列表:

FindAll

答案 1 :(得分:10)

要返回所有条目:

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

只有第一个:

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

答案 2 :(得分:1)

您编写的内容会导致编译错误

  

'string.Substring(int)'的最佳重载方法匹配有一些无效的参数

Substring用于使用字符位置和/或结果字符串的长度来获取字符串的一部分。

例如,

srch.Substring(1, 3)返回字符串“her”

正如其他人所提到的,你应该使用Contains来告诉你一个字符串是否在另一个字符串中出现。如果您想知道实际位置,请使用IndexOf

答案 3 :(得分:0)

我想使用indexOf或包含

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

答案 4 :(得分:0)

我必须做同样的问题。

你需要这个:

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

其中:

myList List<String>具有值 myString必须包含在任何位置

事实上你搜索myString是否包含列表中的任何条目。 希望这是你想要的......

答案 5 :(得分:0)

对于CaseSensitive,请使用:

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

OR

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