2014-02-13 5 views
0

일반 목록이 있으며 특정 패턴과 일치하는 항목을 목록에서 검색하고 싶습니다.일반 목록에서 패턴 찾기

예를 들어, 내 목록이 포함 된 경우 :

  • 테이블
  • 스탠

을 서서 내 패턴 "는"인 경우, 나는이 필요 대소 문자에 관계없이 텍스트에 "an"이 포함 된 항목을 목록에서 검색하십시오. 이 경우에는 스탠드, 앤, 스탠이 반환됩니다.

이것은 내가 지금까지 (TextBox1에 패턴을 포함하는 경우)이 무엇 :

string str = array1.Find(item => item == TextBox1.Text.Trim()); 

if (str != "") 
{ 
    Label3.Text = "List Item Found"; 
} 
else 
{ 
    Label3.Text = "List Item Not Found."; 
} 

이 어떤 도움 감사합니다!

감사합니다.

답변

1

당신은 아마 LINQ를 사용한다 :

var matches = array1.Where(x => x.Contains(TextBox1.Text.Trim())).ToList(); 

는 대소 문자를 구분하려면, 사용 IndexOf :

var matches = array1.Where(x => x.IndexOf(TextBox1.Text.Trim(), StringComparison.OrdinalIgnoreCase) != -1).ToList(); 
+0

감사합니다! 나는 한 번 보게 될 것이다 -이 방법은 텍스트의 다른 경우 (즉, 위 또는 아래)에서 작동합니까? –

+0

아니요, 'Contains'는 대소 문자를 구분합니다. 대소 문자를 구별하지 않는 해결책으로 답변을 업데이트했습니다. – MarcinJuraszek

+0

고마워요 ... 실행하려고하면 '로컬 변수 x을 선언 할 수 없습니다'라는 메시지가 나타납니다. 내가 놓친 게 있니? –

1
var regex = new RegEx("an", RegexOptions.IgnoreCase); 
var anyMatches = array1.Any(x => regex.IsMatch(x)); 
if(anyMatches) 
{ 
    Label3.Text = "List Item Found"; 
} 
else 
{ 
    Label3.Text = "List Item Not Found"; 
} 
+0

크기에 따라 달라질 수 있습니다. 컴파일 된 정규 표현식을 사용하고 싶습니다. – Aron

+0

감사합니다. @Aron. 이 방법을 살펴 보겠습니다. 대소 문자를 구분합니까? –

+1

은 정규식에 따라 다릅니다. [RegexOptions.IgnoreCase] ​​(http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions%28v=vs.110%29.aspx)를 참조하십시오. – Aron