无论如何,要使 IList.Contains() 的行为更像通配符包含?
我正在尝试解析 csv 字符串,将结果放入 IList 集合中,然后尝试找到一种方法来根据传入的内容执行通配符“包含”。现在我有以下内容:
public static IList<string> DBExclusionList
{
get
{
Regex splitRx = new Regex(@",\s*", RegexOptions.Compiled);
String list = (string)_asr.GetValue("DBExclusionList",typeof(string));
string[] fields = splitRx.Split(list);
return fields;
}
}
if (DBExclusionList.Contains(dbx.Name.ToString())==false)
{...}
所以如果字符串我am 解析(.config 文件中的键值)包含: key="DBExclusionList" value="ReportServer,ReportServerTempDB,SQLSentry20,_TEST"
DBExclusionList.Contains() 对于列表中前 3 项的精确匹配效果非常好,但我希望也能够将其用于任何部分第四项'_TEST'的匹配
有什么办法吗?我当然可以对其进行硬编码以始终排除任何内容,但我宁愿不这样做。
谢谢。
I am trying to parse thru a csv string, put the results into a IList collection and then trying to find a way to do a wildcard 'contains' based on what was passed in. Right now I have the following:
public static IList<string> DBExclusionList
{
get
{
Regex splitRx = new Regex(@",\s*", RegexOptions.Compiled);
String list = (string)_asr.GetValue("DBExclusionList",typeof(string));
string[] fields = splitRx.Split(list);
return fields;
}
}
if (DBExclusionList.Contains(dbx.Name.ToString())==false)
{...}
So if the string I am parsing (key value from .config file) contains:
key="DBExclusionList" value="ReportServer,ReportServerTempDB,SQLSentry20,_TEST"
The DBExclusionList.Contains() works very well for exact matches on the first 3 items in the list, but I want to be able to ALSO have it for any partial match of the fourth item '_TEST'
is there any way to do it? I could certainly hardcode it to always exclude whatever but I'd rather not.
thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 Linq :
Using Linq :
由于您使用的是 .NET 3.5,因此可以使用Where() LINQ 扩展方法:
Since you're using .NET 3.5, you could use the Where() LINQ extension method:
不要使用正则表达式来分割。使用
string.Split()
并使用分号等分隔_asr.GetValue("DBExclusionList)
。_asr.GetValue("DBExclusionList) 中的每个项目
应该是一个正则表达式模式,因此您可以依次检查每个模式。Don't use regex to split. Use
string.Split()
and delimit your_asr.GetValue("DBExclusionList)
with something like semi-colons.Each item in
_asr.GetValue("DBExclusionList)
should be a regex pattern, so you check against each one in turn.