Как удалить лишние возвраты и пробелы в строке с помощью регулярных выражений? - PullRequest
12 голосов
/ 11 февраля 2011

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

Ответы [ 4 ]

17 голосов
/ 11 февраля 2011

string new_string = Regex.Replace(orig_string, @"\s", "") удалит все пробелы

string new_string = Regex.Replace(orig_string, @"\s+", " ") просто свернет несколько пробелов в один

15 голосов
/ 12 февраля 2011

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

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

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

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");
0 голосов
/ 22 мая 2013

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

//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.
0 голосов
/ 11 февраля 2011

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

...