Строка JavaScript с новой строкой - но без использования \ n

У меня есть строка с новыми строками. Я хочу преобразовать их в HTML<br>s, но мне трудно их обнаружить.

Представьте себе строку JavaScript, подобную этой:

var foo = "Bob
is
cool";

Это те новые линии, которые мне нужно обнаружить. Они не используют\n специальный символ - они просто в формате.

 Pointy14 апр. 2012 г., 16:44
Я думаю, он имел в виду, что они не выражены\n escape-последовательность, а скорее то, что символ буквально присутствует в исходном коде.
 Evert14 апр. 2012 г., 16:45
@Pointy: но результат будет таким же, если это не будет синтаксической ошибкой.
 Chris Morgan14 апр. 2012 г., 16:43
Тотis \n (если это возможно также\r)
 Pointy14 апр. 2012 г., 17:25
@ Да, я согласен, конечно; Я тоже думаю, что синтаксическая ошибка.
 Randy the Dev14 апр. 2012 г., 16:46
& quot; Простой формат & quot; символы новой строки - это просто видимый результат \ n специального символа. \ n это просто псевдоним.

Ответы на вопрос(7)

Комбинируя 2 можно генерировать читаемый JS и совпадающий вывод

 var foo = "Bob\n\
    is\n\
    cool.\n\";

\n или же\r или же\r\n.

Есть несколько представлений новых строк, см.http://en.wikipedia.org/wiki/Newline#Representations

 14 апр. 2012 г., 16:45
Я делаю это. Я проверил все три:console.log(story.message.split(/\n/g)); console.log(story.message.split(/\r/g)); console.log(story.message.split(/\r\n/g)); Все они возвращаются одинаково. Нет раскола.

\n во всяком случае, даже couse это не видно, или, может быть, они используют\r, Так что просто замени\n или же\r с<br/>

Решение Вопроса

по которой он не работает, заключается в том, что строки javascript должны быть завершены до следующего символа новой строки (не\n очевидно). \n существует, чтобы позволить разработчикам простой способ поместить символ новой строки (ASCII: 10) в их строки.

Когда у вас есть строка, которая выглядит следующим образом:

//Note lack of terminating double quote
var foo = "Bob 

В этот момент ваш код будет иметь синтаксическую ошибку и перестанет работать.

Если вы хотите, чтобы строка занимала несколько строк, вы можете вставить символ обратной косой черты & apos;\& APOS; перед тем, как завершить строку, вот так:

//Perfectly valid code
var foo = "Bob \
is \
cool.";

Однако эта строка будетnot содержать\n символы в позициях, где строка разбита на отдельные строки. Единственный способ вставить новую строку в строку - это вставить символ со значением 10, самым простым способом которого является\n побег персонажа.

var foo = "Bob\nis\ncool.";
 31 окт. 2016 г., 00:21
Авг 2016 Обновление: СЕЙЧАС есть способ сделать это:stackoverflow.com/a/40334713/1454514

UPDATE: я простонаткнулся замечательный дизайн синтаксиса в JavaScript-ES6 под названиемШаблонные литералы, То, что вы хотите сделать, может быть буквально сделано с помощью` (обратный или серьезный характер ударения).

В таком случае,foo === "Bob\nis\ncool" правда.

Почему дизайнеры решили, что` ... ` можно оставить неопределенным, но" ... " а также' ... ' незаконно иметь символы новой строки в них вне меня.

Просто убедитесь, что браузер таргетинга поддерживает реализацию Javascript, заданную ES6.

& # XA0;

P. S. Этот синтаксис обладает довольно интересной функцией, которая похожа на PHP и многие другие языки сценариев, а именно & quot;Помеченные литералами шаблона& Quot; в которой вы можете иметь строку, подобную этой:

var a = 'Hello', b = 'World';
console.log(`The computer says ${ a.toUpperCase() }, ${b}!`);
// Prints "The computer says HELLO, World!"

  function nl2br (str, is_xhtml) {,
     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
  } 

вот так:

var mystr="line\nanother line\nanother line";
mystr=nl2br(mystr);
alert(mystr);

это должно насторожитьline<br>another line<br>another line

источник функции отсюда: http://phpjs.org/functions/nl2br:480

это имитируетnl2br функция в php ...

 14 апр. 2012 г., 16:45
Пожалуйста, не публикуйте ссылку в качестве ответа. :)
 14 апр. 2012 г., 16:52
согласился, наклеил сюда функцию - с любезностью источника. довольно сложно написать полный скрипт с мобильного сайта stackoverflow :)

что вы понимаете, как работает \ n. Результирующая строка все еще просто содержит байт со значением 10. Это представлено в исходном коде JavaScript с \ n.

Размещенный вами фрагмент кода на самом деле не работает, но если это сработало, перевод строкиwould быть эквивалентным \ n, если только это не перевод строки в стиле Windows, в этом случае это будет \ r \ n. (но даже эта замена все равно будет работать).

 14 апр. 2012 г., 16:49
Благодарю. В таком случае, почему эта работа не победит?console.log(story.message.split(/\n/g)); console.log(story.message.split(/\r/g)); console.log(story.message.split(/\r\n/g)); Все они возвращаются одинаково. Нет разделения
 14 апр. 2012 г., 17:45
Разместите полный фрагмент кода, включая фактические строки.

Ваш ответ на вопрос