Как заменить все переносы строк в строке на элементы <br />?
Вопрос: Как мне считать символы переноса строки из строки на JavaScript и заменить все переносы строки на элементы <br />
?
Пример:
У меня есть переменная, переданная из PHP следующего вида:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Я хотел бы, чтобы результат выглядел примерно так после преобразования с помощью JavaScript:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
Как я могу добиться этого?
5 ответ(ов)
Чтобы преобразовать все символы перевода строки в HTML, вы можете использовать следующую строку кода:
str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');
Если вам интересно, что означает ?:
, это называется "неконтролирующая группа". Это значит, что группа в регулярном выражении, заключенная в скобки, не будет сохранена в памяти для последующей ссылки.
Для более подробной информации вы можете ознакомиться с этими обсуждениями:
Если ваша задача заключается только в отображении переносов строк, вы можете сделать это с помощью CSS.
<div style="white-space: pre-line">Некоторый текст
с переносами строк</div>
Jsfiddle: https://jsfiddle.net/5bvtL6do/2/
Примечание: Обратите внимание на оформление и отступы в коде, поскольку свойство white-space: pre-line
будет отображать все переносы строк (за исключением последнего переноса строки после текста, смотрите пример в fiddle).
Конечно! Если вы хотите заменить символы новой строки (\n
) на <br />
без использования регулярных выражений, вы можете сделать это с помощью метода split
и join
. Вот пример кода:
str = str.split("\n").join("<br />");
Здесь мы сначала разбиваем строку str
на массив, используя символ новой строки в качестве разделителя, а затем объединяем элементы массива в одну строку, вставляя между ними <br />
. Это эффективно заменяет все символы переноса строки в исходной строке.
Этот код работает для строки, полученной из textarea. Он заменяет все вхождения новой строки (как Windows-формата \r\n
, так и Unix-формата \n
) на <br />
.
Вот как выглядит код:
str.replace(new RegExp('\r?\n', 'g'), '<br />');
Таким образом, если у вас есть текст, введенный пользователем в textarea, этот код поможет преобразовать символы новой строки в HTML-теги для корректного отображения в браузере.
Если принятый ответ не сработал для вас, вы можете попробовать следующее:
str.replace(new RegExp('\n', 'g'), '<br />');
Это сработало для меня.
Где найти документацию по форматированию даты в JavaScript?
В чем разница между String.slice и String.substring?
Проверка соответствия строки регулярному выражению в JS
Существует ли ссылка на "последнюю" библиотеку jQuery в Google APIs?
Как создать диалог с кнопками "Ок" и "Отмена"