Печать строк шаблона Javascript с разрывами строк

Есть ли способ распечатать (используя console.log) строки шаблона javascript, применяя замены, когда это так, но учитывая разрывы строк '\ n' при печати?

Например, когда у меня есть следующее:

let someVar = 'a';

let tsString = `here goes ${someVar} 
some other line
some other line`;

console.log(tsString);

Я бы хотел, чтобы он печатал С разрывами строк, а не печатал \n вместо этого.

Я думаю, что может быть какое-то преобразование между строками шаблона и обычными строками, но я не смог его найти.

*** РЕДАКТИРОВАТЬ: это происходит в терминале, а не в браузере. Запуск приложения NodeJS. Извините, что не указал это, я предположил, что то, что я хотел, будет специфичным для JS, а не для узла (по крайней мере, решение).


person Tzn    schedule 23.03.2018    source источник
comment
В моей консоли нет \n, или вы хотите \n?   -  person H.B.    schedule 23.03.2018
comment
Из-за того, как строки анализируются парсерами HTML, все ненужные пробелы удаляются (имеются в виду разрывы строк). Это просто раздражение консоли?   -  person Randy Casburn    schedule 23.03.2018
comment
@RandyCasburn Поскольку вопрос конкретно относится к console.log, это не должно быть проблемой.   -  person H.B.    schedule 23.03.2018
comment
@Х.Б. - Я понимаю, но вы никогда не знаете. Если это раздражает консоль, то даже находиться здесь — пустая трата времени. Но если есть непонимание между тем, что отображается в представлении HTML, и тем, что отображается в консоли, возможно, мы сможем помочь. Есть смысл?   -  person Randy Casburn    schedule 23.03.2018
comment
@RandyCasburn: Да. Интересно, какой браузер используется...   -  person H.B.    schedule 23.03.2018
comment
Может быть дело в браузере, но в Safari это 3 строки. И если \n помещаются в строку, она печатается в 3 строки без отображения \n.   -  person QuentinUK    schedule 18.02.2020


Ответы (4)


Я думаю, что это может быть связано с используемой вами ОС, поскольку Windows и Mac имеют разную длину символов для окончаний строк.

Чтобы ответить на конкретный вопрос, который, кажется, работает для меня.

const os = require('os');

let someVar = 'a';

let tsString = `here goes ${someVar} ${os.EOL} some other line ${os.EOL} some other line`;

console.log(tsString);

Вы можете прочитать о промежуточном программном обеспечении os в документации по nodejs здесь: https://nodejs.org/api/os.html#os_os_eol

Это похоже на аналогичный дубликат: Как создать разрыв строки в строке JavaScript для передачи в NodeJS для записи в текстовый файл?

person pourmesomecode    schedule 18.02.2020

Другое решение, кроме добавления к строке \n, которое является стандартным решением, выглядит следующим образом:

У вас есть символ для новой строки:

консоль Chrome с исходным кодом

(Я не могу вставить этот символ сюда, так как уценка убивает его)

Вы можете записать его в переменную и вставить в строку шаблона:

const newline = tsString[12];
const myString = `Hello ${newline} World!`;

Надеюсь, поможет.

person Gilad    schedule 18.02.2020

Вам следует попробовать заменить EOL в зависимости от того, откуда вы берете контент, формы в качестве стандарта должны поддерживать CRLF \r\n в соответствии со спецификацией (https://www.w3.org/TR/html401/interact/form.html#h-17.13.4)

Используйте следующее регулярное выражение, чтобы заменить все вхождения. \n будет соответствовать EOL, а /gm будет соответствовать всем

let someVar = 'a';

let tsString = `here goes ${someVar} 
some other line
some other line`;

//For terminal (detects EOL on it's own)
console.log(tsString);
let txtString = tsString.replace(/\n/gm, `\r\n`);
// Works in terminal and in textarea
console.log(txtString); 
//For html content, redundant but if it's just html you want!
let htmlString = tsString.replace(/\n/gm, `<br>`);
console.log(htmlString);

person Joe    schedule 20.02.2020

Вы можете вставлять данные внутри строки, например

const myTemplateString = My sample text 1 is ${one} My second line 2 is ${two}

console.log(myTemplateString) ES6 сохранит пробелы, и, следовательно, вы можете получить необходимые разрывы строк. см. эту статью< /а>

person Arun Kumar    schedule 24.02.2020