7

Как заменить все переносы строк в строке на элементы <br />?

1

Вопрос: Как мне считать символы переноса строки из строки на 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 ответ(ов)

15

Чтобы преобразовать все символы перевода строки в HTML, вы можете использовать следующую строку кода:

str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');

Если вам интересно, что означает ?:, это называется "неконтролирующая группа". Это значит, что группа в регулярном выражении, заключенная в скобки, не будет сохранена в памяти для последующей ссылки.

Для более подробной информации вы можете ознакомиться с этими обсуждениями:

5

Если ваша задача заключается только в отображении переносов строк, вы можете сделать это с помощью CSS.

<div style="white-space: pre-line">Некоторый текст
с переносами строк</div>

Jsfiddle: https://jsfiddle.net/5bvtL6do/2/

Примечание: Обратите внимание на оформление и отступы в коде, поскольку свойство white-space: pre-line будет отображать все переносы строк (за исключением последнего переноса строки после текста, смотрите пример в fiddle).

0

Конечно! Если вы хотите заменить символы новой строки (\n) на <br /> без использования регулярных выражений, вы можете сделать это с помощью метода split и join. Вот пример кода:

str = str.split("\n").join("<br />");

Здесь мы сначала разбиваем строку str на массив, используя символ новой строки в качестве разделителя, а затем объединяем элементы массива в одну строку, вставляя между ними <br />. Это эффективно заменяет все символы переноса строки в исходной строке.

0

Этот код работает для строки, полученной из textarea. Он заменяет все вхождения новой строки (как Windows-формата \r\n, так и Unix-формата \n) на <br />.

Вот как выглядит код:

str.replace(new RegExp('\r?\n', 'g'), '<br />');

Таким образом, если у вас есть текст, введенный пользователем в textarea, этот код поможет преобразовать символы новой строки в HTML-теги для корректного отображения в браузере.

0

Если принятый ответ не сработал для вас, вы можете попробовать следующее:

str.replace(new RegExp('\n', 'g'), '<br />');

Это сработало для меня.

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