Подтвердить что ты не робот

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

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

Представьте, что строка JavaScript установлена ​​следующим образом:

var foo = "Bob
is
cool";

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

4b9b3361

Ответ 1

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

Если у вас есть строка, которая выглядит так:

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

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

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

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

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

var foo = "Bob\nis\ncool.";

Ответ 2

ОБНОВЛЕНИЕ: я только что натолкнулся на замечательный синтаксический дизайн в JavaScript-ES6, который называется литералами шаблонов. То, что вы хотите сделать, можно в буквальном смысле сделать с помощью ' (символ обратного удара или серьезный акцент).

var foo = 'Bob
is
cool';

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

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

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


PS Этот синтаксис имеет довольно классную функцию, которая похожа на PHP и многие другие языки сценариев, а именно " теговые литералы шаблона ", в которых вы можете получить строку, подобную этой:

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

Ответ 4

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

Отсканированный фрагмент кода на самом деле не работает, но если это так, новая строка будет эквивалентна \n, если только она не является новой строкой в ​​стиле окна, и в этом случае это будет \r\n. (но даже, что замена все равно будет работать).

Ответ 5

вы можете использовать следующую функцию:

  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...

Ответ 6

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

Ответ 7

Это небольшое дополнение к сообщению @Andrew Dunn выше

Объединение 2 возможно для создания читаемых JS и совпадающих выходных данных

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

Ответ 8

Строка запроса, которую я использовал для экранирования символа новой строки в JS: LOAD DATA LOCAL INFILE 'Data.csv' INTO TABLE DEMO FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS;

Это включает новый синтаксис ES6 - литералы шаблонов '', и я попытался изменить '\n' на '\ r\n' и отлично работал в моем случае.

PS: этот пример - мой запрос на загрузку данных CSV в базу данных mysql.

Ответ 9

Ты можешь использовать
в вашем тексте.

Например: var txt1 = "Это первая строка"; var txt2 = "Это вторая строка"; console.log(txt1 + "
"+ txt2);

Ваш результат:

это первая строка это вторая строка