javascript - js window document html



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

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

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

var foo = "Bob
is
cool";

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


Answer #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.";


Answer #3

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


Answer #4

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

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


Answer #5

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

var foo = `Bob
is
cool`;

В этом случае foo === "Bob\nis\ncool" является истинным.

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

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

PS Этот синтаксис имеет довольно классную функцию, похожую на PHP и многие другие языки сценариев, а именно « Tagged template literals », в которой у вас может быть такая строка:

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




string