Как удалить дополнительные возвраты и пробелы в строке с помощью регулярных выражений?

Я конвертирую HTML-код в обычный текст. Но есть много дополнительных возвратов и пробелов. Как их удалить?

Ответ 1

Я предполагаю, что вы хотите

  • найдите два или более последовательных пробела и замените их одним пробелом, а
  • найдите две или несколько строк новой строки и замените их одной новой строкой.

Если это правильно, вы можете использовать

resultString = Regex.Replace(subjectString, @"( |\r?\n)\1+", "$1");

Это сохраняет исходный "тип" пробелов без изменений, а также правильно сохраняет окончание строк Windows. Если вы также хотите "конденсировать" несколько вкладок в один, используйте

resultString = Regex.Replace(subjectString, @"( |\t|\r?\n)\1+", "$1");

Чтобы сконденсировать строку строк и пробелов (любое число каждого) в одну новую строку, используйте

resultString = Regex.Replace(subjectString, @"(?:(?:\r?\n)+ +){2,}", @"\n");

Ответ 3

Я использовал для этого много алгоритмов. Каждый цикл был хорош, но это было ясно и абсолютно.

//define what you want to remove as char

char tb = (char)9; //Tab char ascii code
spc = (char)32;    //space char ascii code
nwln = (char)10;   //New line char ascii char

yourstring.Replace(tb,"");
yourstring.Replace(spc,"");
yourstring.Replace(nwln,"");

//by defining chars, result was better.

Ответ 4

Вы можете использовать Trim() для удаления пробелов и возврата. В HTML пространства не важны, поэтому вы можете опустить их с помощью метода Trim() в классе System.String.