2013-08-29 40 views
2

我有以下如果搜索文本,並在列表中的項目是相同的情況下(小寫/大寫)上能夠正常工作的代碼。如果有混合外殼,它不起作用。我們如何使它不區分大小寫的搜索。不區分大小寫的LIKE條件(正則表達式)

var text = "c"; 
var myStrings = new List<string>() { "Aa", "ACB", "cc" }; 
var regEx = new System.Text.RegularExpressions.Regex(text); 
var results = myStrings 
     .Where<string>(item => regEx.IsMatch(item)) 
     .ToList<string>(); 

編輯:

我需要與不區分大小寫將字符串傳遞給方法我怎麼能做到這一點...

public ActionResult GetItems(string text) 
    { 
     ContextObject contextObject = new ContextObject();   
     TransactionHistory transactionhistory = new TransactionHistory(); 
     System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(text, RegexOptions.IgnoreCase); 
     var items = transactionhistory.GetItems(contextObject, text); 

     return Json(items, JsonRequestBehavior.AllowGet);      
    } 
+0

http://msdn.microsoft.com/en-us/library/h5845fdz.aspx < - 它在文檔中 –

+0

此代碼可以寫得更簡潔:1)使用System.Text.RegularExpressions添加'該文件的頂部,並定義使用'Regex'類型。 2)使用集合初始值設定項來加載列表。 3)使用'var'作爲列表和正則表達式。 4)唯一的地方,你需要傳遞一個類型參數創建一個新的'名單()'時;這在其他地方是不必要的。 –

回答

5

試圖聲明您正則表達式這樣

Regex regEx = new Regex(text, RegexOptions.IgnoreCase); 
+1

您還可以添加'(我)'在text'的'價值的開始。但通過選項作爲參數通常是更好的解決方案。 – richardtallent

+0

@TGH我需要通過不區分大小寫的字符串作爲該方法的參數我怎麼能通過這種情況下,你會提出任何想法.. –

+0

@richardtallent我需要將該不區分大小寫的字符串作爲參數傳遞給該方法我可以通過這種情況下,你會提出任何想法.. –

1

你需要使用這需要RegexOptions.IgnoreCase

超載

RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled; 
System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(text, options); 

編輯:基於您的代碼

RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled;    
var text = "c"; 
var myStrings = new List<string>() { "Aa", "ACB", "cc" }; 
var regEx = new System.Text.RegularExpressions.Regex(text, options); 
var results = myStrings 
      .Where<string>(item => regEx.IsMatch(item)) 
      .ToList<string>(); 

//you will have 2 items in results 
foreach(string s in results) 
{ 
    GetItems(s); 
} 
+0

我需要將該不區分大小寫的字符串作爲參數傳遞給該方法('transactionhistory.GetItems')我怎麼能通過這種情況下,你會提出任何想法。 –

+0

我怎麼能通過那個caseInsensitive字符串到那個方法 –

+0

你的問題不清楚。通過傳遞不區分大小寫的字符串作爲參數是什麼意思? – Ehsan

0

,爲什麼使用正則表達式?我只會對複雜的文本模式使用正則表達式。在這種情況下,就像是

var text = "c"; 
var myStrings = new List<string>() { "Aa", "ACB", "cc" }; 
var results = myStrings 
    .Where(item => item.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0) 
    .ToList(); 

方式更容易使用string.IndexOf()我人除去在和toList,因爲它是默認應用的明確使用字符串。