2014-10-12 99 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();