2012-08-13 59 views
1

我只是寫了一些代碼從一些文本中去掉多餘的換行符。每一組連續的換行符都被合併爲一個換行符。有沒有辦法使用LINQ從文本中刪除多餘的換行符?

這似乎是它可能是一個使用LINQ來簡化代碼的好地方。雖然我對LINQ相當陌生,所以不知道如何做到這一點。任何人都可以提出解決方案

這裏是我的原代碼:

/// <summary> 
/// Collapse extra newlines. 
/// </summary> 
private string CollapseNewlines(string script) 
{ 
    // Remove extra newlines. 
    var lines = script.Split('\n'); 

    var output = new StringBuilder(); 

    bool prevLineWasEmpty = false; 

    foreach (var line in lines) 
    { 
     if (line.Trim() == string.Empty) 
     { 
      if (prevLineWasEmpty) 
      { 
       continue; // Ignore this line. 
      } 

      prevLineWasEmpty = true; 
     } 
     else 
     { 
      prevLineWasEmpty = false; 
     } 

     output.Append(line); 
     output.Append("\n"); 
    } 

    return output.ToString(); 
} 
+1

有一個拆分重載刪除空條目:http://msdn.microsoft.com/en-us/library/ms131448.aspx - 雖然它不會刪除只有空白的行,因爲您的代碼。 – Blorgbeard 2012-08-13 04:47:38

回答

6

試試這個:

var lines = script.Split('\n') 
      .Where(line => !string.IsNullOrWhiteSpace(line)); 

string output = string.Join("\n", lines); 
相關問題