2016-07-12 2 views
0

특정 형식으로 텍스트를 검색하는 데 문제가 있습니다. 내 파일은 다음과 같습니다.특정 형식에 따른 검색 문자열

britney  ak4564gc1 18 
scott  ak3333hc2 28 
jenny  ad4564gc3 32 
amy   ak4564gc4 29 

동적 인 특정 형식의 회사 번호를 검색하고 싶습니다. 여기 내 코드가있다. 형식은 *로 변경된 특정 길이를 가져야합니다.

for (int line = 0; line <= Countline(OriFile)-1; line++) 
{ 
    var desiredText = File.ReadAllLines(OriFile).ElementAt(line); 
    string s = desiredText.ToString(); 
    string b = s.Substring(WONUmStart, WONumLength); 
    //format changeable(I changed it to make it easier to understand) 
    if(b.Contains(a.TextBox.ToString())) //textbox value "ak****gc*" 
    { 
     if (WoNum != b) 
     { 
      WoNum = b; 
      StreamWriter sw = new StreamWriter(reportfile, true); 
      sw.WriteLine(Path.GetFileName(OriFile) + 
         " " + 
         WoNum + 
         " " + 
         Path.GetFileName(MergeFile)); 
      sw.Flush(); 
      sw.Close(); 
     } 
    } 
} 

아무도 나를 안내 할 수 있습니까?

+0

임의의 길이의 임의의 문자'* '는 무엇입니까? –

+1

Regex 클래스를 사용해보십시오. https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx – MichaelMao

+0

예, 정확한 시간입니다 –

답변

1

정규 표현식과 함께 사용하는 것이 좋습니다. Linq.

string pattern = @"\bak.{3}gc.{1}\b"; 

var result = File 
    .ReadLines(OriFile) 
    .Select(line => Regex.Match(line, pattern)) // if we expect at most one match per line 
    .Where(match => match.Success) 
    .Select(match => match.Value); 

... 

File.WriteAllLines(reportfile, result. 
    Select(line => string.Format("{0} {1} {2}", 
    Path.GetFileName(OriFile), line, Path.GetFileName(MergeFile)))); 
+0

값 "ak ** * gc * "실제로 텍스트 박스를 통해 무작위로 바꿀 수 있어야합니다. 나는 상호 이해를위한 예제 형식을 직접 삽입한다. 정규식을 사용하여 형식을 수정해야합니다. –

관련 문제