Для тех, кому не нравится Regex
, вот метод, который использует StringBuilder
:
public static string FilterWhiteSpaces(string input)
{
if (input == null)
return string.Empty;
StringBuilder stringBuilder = new StringBuilder(input.Length);
for (int i = 0; i < input.Length; i++)
{
char c = input[i];
if (i == 0 || c != ' ' || (c == ' ' && input[i - 1] != ' '))
stringBuilder.Append(c);
}
return stringBuilder.ToString();
}
В моих тестах этот метод был в среднем в 16 раз быстрее с очень большим набором строк малого и среднего размера по сравнению со статически скомпилированным Regex. По сравнению с не скомпилированным или нестатичным Regex, это должно быть еще быстрее.
Имейте в виду, что не удаляет начальные или конечные пробелы, только несколько таких случаев.