我正在尝试使用通配符找到一个在列表中查找项目的解决方案。
例如,如果我搜索battle
,我必须查看包含以下名称的列表结果:1battle
battle2
abattlef
等。
我知道C#中的通配符是*
,但是list.IndexOf("*battle*")
它不起作用。
任何帮助将不胜感激。
答案 0 :(得分:3)
假设使用linq的.NET3.5或更高版本:
var results = list.Where(x => x.IndexOf("battle", StringComparison.OrdinalIgnoreCase) > -1);
答案 1 :(得分:3)
使用以下linq:
list.Where(str => str.Contains("battle"));
答案 2 :(得分:2)
使用以下正则表达式:
Regex pattern = new Regex(".*battle.*");
bool isMatch = pattern.IsMatch("battle");
可以找到正则表达式类文档here。
答案 3 :(得分:0)
您需要迭代列表并与正则表达式匹配。
正则表达式的功能在:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
中实现