c# – 如何将字符串与linq中的“过滤器”列表进行比较?
发布时间:2020-12-15 08:48:02 所属栏目:百科 来源:网络整理
导读:我正在尝试通过“过滤器”列表过滤字符串集合…一系列不良单词.该字符串包含我不想要的列表中的单词. 我到目前为止,这里的坏词是“frakk”: string[] filter = { "bad","words","frakk" };string[] foo = { "this is a lol string that is allowed","this i
我正在尝试通过“过滤器”列表过滤字符串集合…一系列不良单词.该字符串包含我不想要的列表中的单词.
我到目前为止,这里的坏词是“frakk”: string[] filter = { "bad","words","frakk" }; string[] foo = { "this is a lol string that is allowed","this is another lol frakk string that is not allowed!" }; var items = from item in foo where (item.IndexOf( (from f in filter select f).ToString() ) == 0) select item; 但这不起作用,为什么呢? 解决方法
您可以使用任何包含:
var items = foo.Where(s => !filter.Any(w => s.Contains(w))); 如果你想比较不区分大小写: var items = foo.Where(s => !filter.Any(w => s.IndexOf(w,StringComparison.OrdinalIgnoreCase) >= 0)); 更新:如果要排除过滤列表中至少有一个单词的句子,可以使用String.Split()和Enumerable.Intersect: var items = foo.Where(sentence => !sentence.Split().Intersect(filter).Any());
(请注意,“空”拆分包括其他空白字符,如制表符或换行符) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |