2012-05-13 1 views
1

은 내가 정상화하고자하는 텍스트 사이에 줄 바꿈을 많이 가지고 여러 개의 텍스트 파일을 가지고 있지만 예를 들어, 텍스트 사이에 줄 바꿈의 양에 어떤 패턴이 없다 : 나는 어디 변경을 원 그래서비정상적인 개행 문자로 텍스트 파일을 정규화 하시겠습니까?

Text 




Some text 








More text 




More 

more 

은 개행의 양이 X에서 Y까지보다 큽니다. 그래서 순차적 개행이 5 개가되면 2가되고, 10이되면 3이됩니다.

현재 문제는 어떤 행을 식별해야합니까? 정상화해야합니다.

분할을 사용하여 새 줄을 계산할 수 있다는 것을 알고 있습니다. 줄이 비어 있는지 확인하는 것과 같은 다른 방법도 있습니다. 그러나이 문제를 해결하기 위해 간단한 정규식이나 더 나은 방법이 있습니까?

답변

1
List<string> Normalize(string fileName, int size) 
{ 
    List<string> result = new List<string>(); 
    int blanks = 0; 

    foreach (var line in File.ReadAllLines(fileName)) 
    { 
     if (line.Trim() == "") 
     { 
      if (blanks++ < size) 
       result.Add(""); 
     } 
     else 
     { 
      blanks = 0; 
      results.Add(line); 
     } 
    } 
    return line; 
} 
+0

참고 : 내 dev 환경을 열지 마십시오. 따라서 일부 기능이 잘못되었을 수 있습니다. 잘하면, 당신은 아이디어를 얻는다. 그러나 –

+0

는 약간의 변경을했다. 그러나 나의 필요에 당신의 생각은 많이 감사한다. – Guapo

0

가 여기에 정규 표현식을 사용하여 하나의 방법

string sText = File.ReadAllText(@"c:\file.txt"); 
sText = removeLines(sText); 

public string removeLines(string sData) { 
      string[] sArray = sData.Split(sDelim, 
              StringSplitOptions.RemoveEmptyEntries); 
      StringBuilder builder = new StringBuilder(); 
      foreach (string value in sArray) 
      { 
       builder.Append(value); 
       builder.Append("\r\n"); 
      } 
      return builder.ToString(); 
} 

아니면 한 줄의 :

string sText = File.ReadAllText(@"c:\file.txt"); 
sText = Regex.Replace(sText, "[\r\n]+", "\n"); 
+0

들이 있습니다하지'\ 연구 \ 그들이 n' 간단한 연속'\ n' 및 내가 언급 한 것처럼 순차적 인 연속 선을 초과 할 때만 제거하고 싶다. 나는 정규식으로 프로가 아니지만'[\ n] + {3}'과 같은 일을 할 수 있을까? – Guapo