Rubberduck.Parsing.VBA.StringExtensions.RemoveExtraSpacesLeavingIndentation C# (CSharp) Method

RemoveExtraSpacesLeavingIndentation() public static method

public static RemoveExtraSpacesLeavingIndentation ( this line ) : string
line this
return string
        public static string RemoveExtraSpacesLeavingIndentation(this string line)
        {
            var newString = new StringBuilder();
            var lastWasWhiteSpace = false;

            if (line.All(char.IsWhiteSpace))
            {
                return line;
            }

            var firstNonwhitespaceIndex = line.IndexOf(line.FirstOrDefault(c => !char.IsWhiteSpace(c)));

            for (var i = 0; i < line.Length; i++)
            {
                if (i < firstNonwhitespaceIndex)
                {
                    newString.Append(line[i]);
                    continue;
                }

                if (char.IsWhiteSpace(line[i]) && lastWasWhiteSpace) { continue; }

                newString.Append(line[i]);
                lastWasWhiteSpace = char.IsWhiteSpace(line[i]);
            }

            return newString.ToString().Replace('\r', ' ');
        }