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

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

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

let someVar = 'a';

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

console.info(tsString);

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

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

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

В моей консоли нет \n, или вы хотите \n?

H.B. 23.03.2018 19:48

Из-за того, как строки анализируются синтаксическими анализаторами HTML, все ненужные пробелы удаляются (что означает разрывы строк). Это просто раздражает консоль?

Randy Casburn 23.03.2018 19:50

@RandyCasburn Поскольку вопрос конкретно относится к console.info, это не должно быть проблемой.

H.B. 23.03.2018 19:52

@ H.B. - Я понимаю, но никогда не знаешь. Если это раздражает консоль, то даже быть здесь - пустая трата времени. Но если это непонимание между тем, что отображается в представлении HTML, и тем, что отображается в консоли, возможно, мы сможем помочь. Есть смысл?

Randy Casburn 23.03.2018 19:54

@RandyCasburn: Да. Интересно, какой браузер используется ...

H.B. 23.03.2018 19:56

Может быть, дело в браузере, но в Safari это 3 строчки. И если \ n помещены в строку, она затем печатается в 3 строках без отображения \ n.

QuentinUK 18.02.2020 16:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
8
6
362
4

Ответы 4

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

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

chrome's console with original source

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

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

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

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

Я думаю, это может быть связано с используемой вами ОС, так как 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.info(tsString);

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

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

Вам следует попробовать заменить EOL в зависимости от того, где вы берете контент, формы в качестве стандарта должны поддерживать CRLF \r\n в соответствии со спецификацией (https://www.w3.org/TR/html401/interact/forms.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.info(tsString);
let txtString = tsString.replace(/\n/gm, `\r\n`);
// Works in terminal and in textarea
console.info(txtString); 
//For html content, redundant but if it's just html you want!
let htmlString = tsString.replace(/\n/gm, `<br>`);
console.info(htmlString);

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

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

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

Другие вопросы по теме