Строка JavaScript с новой строкой - но не использующая\n
У меня есть строка, в которой есть новые строки. Я хочу преобразовать их в HTML <br>
s, но мне сложно их обнаружить.
Представьте, что строка JavaScript установлена следующим образом:
var foo = "Bob
is
cool";
Они - вид новых линий, которые мне нужно обнаружить. Они не используют специальный символ \n
- это просто формат.
Ответы
Ответ 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!"
Ответ 3
Проверьте \n
или \r
или \r\n
.
Существует несколько представлений о переводах строк, см. http://en.wikipedia.org/wiki/Newline#Representations
Ответ 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);
Ваш результат:
это первая строка это вторая строка