2010-08-17 5 views
3

다음 형식의 txt 파일에 로그가 저장되어 있습니다.ASP.NET MVC 페이징으로 웹 페이지에 로그 파일 정보 표시

====== 2010년 8월 4일 오전 10시 20분 45초 =========================== ==============

처리 기부

====== 2010년 8월 4일 10 : 21 : 42A의 M ========= ================================

서버에 정보를 보내는

====== 2010 년 8 월 4 일 10:21:43 AM =============================== ==

"===="줄 사이의 정보가 ASP.NET MVC에서 페이징을 사용하여 웹 페이지에 표시 할 레코드로 계산되는 목록으로이 줄을 구문 분석해야합니다.

예 : 첫 번째 레코드 항목이

====== 2010년 8월 4일 오전 10시 20분 45초 것 =============== ==================================

처리 기부

나는 운이 없었다 지금까지. 내가 어떻게 해?

답변

0

파일에서 읽는 동안 당신은 라인이 =====

var sBuilder = new StringBuilder() 
bool lineEnd = false; 
var items = new List<string>(); 
string currentLine = String.Empty 
using(var file = new StringReader("log.txt")) 
{ 
    while((currentLine = file.ReadLine()) != null) 
    { 
    if(currentLine.EndsWith("====")) 
    { 
     items.Add(sBuilder.ToString()); 
     sBuilder.Clear(); 
    } 
    else 
     sBuilder.Append(currentLine); 
    } 
} 

그것은 조금 자세한입니다하지만 몇 가지 아이디어 그래서

0

을 줄 수도로 끝나는 있는지 확인하기 위해 검사를 할 수있는 .. 내 다른 대답에서 자세한 코드를 무시하십시오. 대신이 두 라인 경이를 사용하십시오 :

string texty = "=====........"; //File data 
var matches = Regex.Matches(texty, @"={6}(?<Date>.+)={41}\s*(?<Message>.+)"); 

var results = matches.Cast<Match>().Select(m => new {Date = m.Groups["Date"], Message = m.Groups["Message"]}); 

나는 항상 정규 표현식을 잊어 버립니다.