Haven't managed to test it in C# yet, but the following works on http://www.regexr.com/:
Regex.Replace(value.Trim(), @"[^\S\r\n]+", " ");
Credit goes to Match whitespace but not newlines
The Regex works by matching the negated character class of not-whitespace or return / newlines.