Как я могу заменить несколько разрывов строки синглом <BR>?

Альтернативный синтаксис:

INSERT tbl (Col1, Col2, ..., ColN)
  SELECT Col1, Col2, ..., ColN
  FROM Tbl2
  WHERE ...

запрос Select может (конечно), включать выражения, операторы выбора, константы/литералы, и т.д.

7
задан Michael Myers 12 November 2009 в 22:52
поделиться

3 ответа

Это заменит любую последовательность возврата каретки ( \ r ) и / или перевода строки ( \ n ) на один < br /> :

string formatted = Regex.Replace(original, @"[\r\n]+", "<br />");

Если вы хотите заменить только последовательности из двух или более элементов, то упрощенный ответ - использовать квантификатор {2,} (что означает «минимум два повторения» ) вместо + (что означает «по крайней мере одно повторение»):

string formatted = Regex.Replace(original, @"[\r\n]{2,}", "<br />");

Обратите внимание, что в приведенном выше выражении обычная комбинация CR + LF рассматривается как последовательность из двух элементов. Возможно, вы захотите рассматривать CR + LF как отдельный элемент, и в этом случае выражение станет немного более сложным:

string formatted = Regex.Replace(original, @"(?:\r\n|\r(?!\n)|(?<!\r)\n){2,}", "<br />");
23
ответ дан 6 December 2019 в 07:26
поделиться

Используйте следующий код:

str = Regex.Replace(str, @"[\r\n]+", "<br />");

Было бы быстрее вызвать обычный метод Replace несколько раз и вообще не использовать регулярное выражение, например:

int oldLength;
do {
    oldLength = str.Length;
    str = str.Replace('\r', '\n');
    str = str.Replace("\n\n", "\n");
} while(str.Length != oldLength);

str = str.Replace("\n", "<br />");
2
ответ дан 6 December 2019 в 07:26
поделиться

Обратите внимание, что string.Replace () намного быстрее, чем использование RegEx:

string result = oldString.Replace("\n\n","\n");
result = result .Replace("\n","<br>");
-1
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: