2013-03-21 2 views
2

나는이 문자열 목록을 가지고 있습니다. 내 검색 키워드와 정확히 일치하는 항목 만 필터링하려고합니다. 예를 들어, 키워드가 "in"인 경우 정확한 단어 "in"을 가진 항목 만 필터링하도록 결과를 원합니다. 도와주세요. 내 목록에서LINQ 정확한 단어를 사용하여 필터링 된 목록

코드

static IEnumerable<string> GetData() 
     { 
      var strList = new List<string> 
      { "I'm in love", 
      "Coffee contains caffeine", 
      "The best inn so far", 
      "Inside of me", 
      "in the darkness"}; 
      var filteredItems = strList.Where(x => x.Contains("in")); 
      return filteredItems; 
     } 

나는 그들이 "에서"정확한 단어가있는 항목 만 이후 항목 1, 항목 5를 반환합니다.

var filteredItems = strList.Where(x => (" " + x + " ").Contains(" in ")); 

나이 :

var filteredItems = strList.Where(x => Regex.IsMatch(x, "(^|)in($|)")); 

대소 문자를 구분하지 버전 : 그것이 할

var filteredItems = strList.Where(x => (" " + x .ToLower() + " ").Contains(" in ")); 
var filteredItems = strList.Where(x => Regex.IsMatch(x, "(^|\s)in($|\s)", 
                RegexOptions.IgnoreCase)); 

답변

5

여기에 하나를 할 수있는 방법이다 ar을 구성하는 egex.

앞 문자열 - 투 - 경기에 대한 뒷면에 공백을 추가, 그것을 할 수

저렴한 방법은 단어에 대한 일치 공백이 전면 및 후면에 찾고있는 :

static IEnumerable<string> GetData(string match) 
    { 
     var strList = new List<string> 
     { "I'm in love", 
     "Coffee contains caffeine", 
     "The best inn so far", 
     "Inside of me", 
     "in the darkness"}; 

     match = match.ToLower(); //to do case insensitive matching 
     var filteredItems = strList.Where(x => (" " +x.ToLower() + " ").Contains(" "+match+" ")); 
     return filteredItems; 
    } 
+0

밖으로의 반대가.에 람다 표현식을 포함 할 수 없습니다이 –

+0

감사하고, 다른 옵션 image_0.jpg –

+0

표현 –

2

나는 Regex.IsMatch 방법을 사용할 것입니다. 예를 들면 :는

string pattern = "<your pattern here>"; 

static IEnumerable<string> GetData() 
    { 
     var strList = new List<string> 
     { "I'm in love", 
     "Coffee contains caffeine", 
     "The best inn so far", 
     "Inside of me", 
     "in the darkness"}; 
     var filteredItems = strList.Where(x => Regex.IsMatch(x, pattern)); 
     return filteredItems; 
    } 

일치해야 패턴이다 ^(.*)\sin\s(.*)$

그래서 0 개 이상의 문자 (즉, 공백으로 둘러싸여) 다음 "의"다음 0 개 이상의 문자. Rubular 또는 그물에 그와 같은 다른 많은 것들을 사용할 수 있습니다 귀하의 정규식을 귀하의 문자열과 함께 귀하의 문자열과 함께 테스트 :-)

뺨에 약간의 혀가 있지만 정규식은 당신을 줄 수 있습니다 더 problems :-)

HTH, 나단

관련 문제