2

検索テキストとリスト内の項目が同じケース (小文字/大文字) の場合に機能する次のコードがあります。大文字と小文字が混在している場合、機能していません。大文字と小文字を区別しない検索を行うにはどうすればよいですか。

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);                     
  }
4

3 に答える 3

5

このように正規表現を宣言してみてください

Regex regEx = new Regex(text, RegexOptions.IgnoreCase);
于 2013-08-29T05:53:27.160 に答える
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);
}
于 2013-08-29T05:54:04.990 に答える