Замените символы новой строки на <p>и с тегами <br/">
Итак, я знаю, как заменить строки в моем С# -коде. Но замена новой строки для тега <br />
не всегда очень правильная.
Итак, мне было интересно, какую стратегию используют другие? Правильный способ, я думаю, будет использовать теги <p>
и теги <br />
.
Вот несколько примеров результатов, которые я хотел бы получить.
Если нет новой строки, я хочу, чтобы текст был обернут тегами <p>
.
Этот текст не содержит символов новой строки
<p>This text contains no newlines</p>
Если текст содержит новую строку, я хочу, чтобы он был заменен тегом <br />
и был заключен в теги <p>
.
Этот текст содержит 1 новая строка
<p>This text contains<br /> 1 newline.</p>
Если есть "двойные строки", я хочу, чтобы этот блок был заключен в теги <p>
.
Это текст с "двойными линиями" в конце.
Это текст без новой строки в конце.
<p>This a text with 'double newlines at the end.</p>
<p>This is a text with no newline at the end.</p>
Я мог бы написать больше примеров/комбинаций, но я предполагаю, что это несколько ясно, что я имею в виду.
Спасибо заранее.
Ответы
Ответ 1
Здесь вы можете сделать это, используя только простые замены строк:
string result = "<p>" + text
.Replace(Environment.NewLine + Environment.NewLine, "</p><p>")
.Replace(Environment.NewLine, "<br />")
.Replace("</p><p>", "</p>" + Environment.NewLine + "<p>") + "</p>";
Обратите внимание, что сначала ваш текст должен быть экранирован с помощью HTML, иначе вы можете столкнуться с рисками межсайтовых скриптовых атак. (Примечание: даже при использовании тегов <pre>
все еще существует риск межсайтового скриптинга).
Ответ 2
Вы можете просто оставить его в покое и использовать CSS для правильного отображения разрывов. Вот сложный пример, который является своего рода "симпатичным". замена для <pre> но вы используете <p> вместо:
< p style = "padding: 1em; line-height: 1.1em; font-family: monospace; white-space: pre; переполнение: авто; background-color: rgb (240 255 240); граница: тонкий твердый rgb (255, 220, 255); < gt; </p>
Текст идет здесь.
</р >