2014-10-12 104 views
0

如何比较多个字符串与模式?将字符串与C中的模式进行匹配#

值:

var items = new List<string> {"item1", "item2", "item123", "new_item123"}; 

模式:

"%item1%" - I receive this option with an external system 

预期的结果: “物品1”, “item123”, “new_item123”

我们使用实体框架在数据库中搜索数据。

回答

5

虽然你很可能使用正则表达式:

var pattern = new Regex("/item1/"); 
var items = new List<string> {"item1", "item2"}; 

var matches = items.Where(pattern.IsMatch); 

为什么不只有:

var items = new List<string> {"item1", "item2"}; 
var matches = items.Where(item => item.Contains("item1")); 
+0

代码的第一部分将不会编译(正则表达式未声明) – 2014-10-12 12:05:22

+0

@FlatEric哎呀,对,谢谢。 – nvoigt 2014-10-12 12:06:11

+0

@nvoigt,谢谢 – Pavel 2014-10-12 12:15:03

0

喜欢这个

string ptrn = "item1"; 
foreach(string s in items) { 
    if(s.IndexOf(ptrn) > -1) Console.WriteLine(s); 
} 
+0

我不认为他真的搜索百分比符号。 – nvoigt 2014-10-12 11:58:33

+0

不,但它做同样的工作 – 2014-10-12 12:00:18

+0

一串“tem”将匹配,而“item11”不会与您的代码。他正在寻找其中有“item1”的东西。 – nvoigt 2014-10-12 12:01:46

1

如果你真的想用一个RegEx做到这一点,你可以用这个:

Regex r = new Regex("^item1$"); 
var result = items.Where(x => r.IsMatch(x)).ToList();