在字符串列表中查找子字符串
我有一个这样的列表,我希望能够在此列表中搜索来自另一个字符串的子字符串。 例:
List list = new List(); 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; }
使用Linq,只需检索第一个结果:
string result = list.FirstOrDefault(s => s.Contains(srch));
要使用Linq(例如早期的.NET版本,如.NET 2.0),您可以使用List
的FindAll
方法,在这种情况下,它将返回列表中包含搜索词的所有项:
var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); });
要返回所有条目:
IEnumerable result = list.Where(s => s.Contains(search));
只有第一个:
string result = list.FirstOrDefault(s => s.Contains(search));
您编写的内容会导致编译错误
‘string.Substring(int)’的最佳重载方法匹配有一些无效的参数
子串用于使用结果字符串的字符位置和/或长度来获取字符串的一部分。
例如srch.Substring(1, 3)
返回字符串“her”
正如其他人所提到的,你应该使用Contains
来告诉你一个字符串是否在另一个字符串中出现 如果你想知道你使用IndexOf
的实际位置
我喜欢使用indexOf或contains
someString.IndexOf("this"); someString.Contains("this");
同样的问题我不得不这样做。
你需要这个:
myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)
哪里:
myList
是List
具有myString
必须包含在任何位置的值
事实上你搜索myString是否包含列表中的任何条目。 希望这是你想要的……