我放弃了这段代码以在 LinqPad 中实现 List.Contains() 的 Regex 变体。不幸的是,它迫使人们创建一个对象来进行比较,当然静态类不能实现接口。有没有办法在不创建单独的对象进行比较的情况下达到相同的结果?
void Main()
{
var a = new List<string>();
a.Add(" Monday ");
a.Add(" Tuesday ");
a.Add(" Wednesday ");
a.Add(" Thursday ");
a.Add(" Friday ");
a.Contains(@"sday\s$", new ListRegexComparer() ).Dump();
}
// Define other methods and classes here
class ListRegexComparer : IEqualityComparer<string>
{
public bool Equals(string listitem, string regex)
{
return Regex.IsMatch(listitem, regex);
}
public int GetHashCode(string listitem)
{
return listitem.GetHashCode();
}
}
编辑:
a.Any(s => Regex.IsMatch(s, @"(?i)sday\s$")).Dump()
不错,内嵌的方式,无需创建对象,来自 Chris Tavares 和 Jean Hominal。