Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing all whitespace lines from a multi-line string efficiently

Tags:

string

c#

regex

In C# what's the best way to remove blank lines i.e., lines that contain only whitespace from a string? I'm happy to use a Regex if that's the best solution.

EDIT: I should add I'm using .NET 2.0.


Bounty update: I'll roll this back after the bounty is awarded, but I wanted to clarify a few things.

First, any Perl 5 compat regex will work. This is not limited to .NET developers. The title and tags have been edited to reflect this.

Second, while I gave a quick example in the bounty details, it isn't the only test you must satisfy. Your solution must remove all lines which consist of nothing but whitespace, as well as the last newline. If there is a string which, after running through your regex, ends with "/r/n" or any whitespace characters, it fails.

like image 311
FunLovinCoder Avatar asked May 19 '10 13:05

FunLovinCoder


1 Answers

If you want to remove lines containing any whitespace (tabs, spaces), try:

string fix = Regex.Replace(original, @"^\s*$\n", string.Empty, RegexOptions.Multiline); 

Edit (for @Will): The simplest solution to trim trailing newlines would be to use TrimEnd on the resulting string, e.g.:

string fix =     Regex.Replace(original, @"^\s*$\n", string.Empty, RegexOptions.Multiline)          .TrimEnd(); 
like image 192
Chris Schmich Avatar answered Sep 17 '22 19:09

Chris Schmich