2012-05-13 8 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

注:私の開発環境は開いていないので、一部の機能が間違っている可能性があります。うまくいけば、あなたは考えを得る、 –

+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 '、彼らは' \ rを\ではなく、私は、私が言及したように、ある一定の連続した量の新しい行を超えたときだけ削除したいと思いました。私は正規表現ではプロではありませんが、 '[\ n] + {3}'のようなことをするでしょうか? – Guapo

関連する問題